关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

牛客网《剑指offer》专栏刷题练习之数组专精

发布时间:2023-06-28 01:00:12
一、 打印从1到最大的n位数 1、题目速览 2、个人题解 2.1、解题思路 由题目可以得知打印的结果取决于n的值且和10的倍数有密切关联: 若n为1,打印的最大值为9 若n为2,打印的最大值为99 。。。 若n为5,打印的最大值为99999 所以我们可以定义一个值为1的辅助数字,根据n的值来让辅助数字乘以不同数量的10 然后从1到辅助数字进行循环,将结果依次存入一个数组即可 2.2、代码实现 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型vector */ vector printNumbers(int n) { // write code here vectorres; int flag=1; for(int i=1;i<=n;i++) flag*=10; for(int i=1;i reOrderArray(vector& array) { // write code here if(array.size()==0||array.size()==1) return array; vectoros; vectorjs; for(int i=0;i reOrderArrayTwo(vector& array) { // write code here int i=0; while(i=array.size()) return array; int temp=array[i]; array[i]=array[flag]; array[flag]=temp; } i++; } return array; } }; 2.3、代码解析 外层while循环结束的条件就是下标超过限制 找到第一个偶数时,定义辅助变量flag,并通过内层的while循环来找到第一个奇数的位置 判断flag是否超过数组限制,如果超过就说明原数组满足题目要求,return返回即可 如果没有超过限制就进行经典的交换元素操作 最后i++,继续往后遍历,超过数组限制后也要利用return返回 那么《剑指offer》专栏之数组专精的分享到此结束了,觉得写的好的朋友可以点赞鼓励一下哈,我们下篇再见!

/template/Home/leiyu/PC/Static