牛客网《剑指offer》专栏刷题练习之数组专精_怎么在牛客网上刷数组题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

经典数组算法题目录

一、 打印从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<int> printNumbers(int n) {
        // write code here
        vector<int>res;
        int flag=1;
        for(int i=1;i<=n;i++)
            flag\*=10;
        for(int i=1;i<flag;i++)
            res.push\_back(i);
        return res;
    }
};

2.3、代码解析
  • 创建动态数组res,这是最终用来返回的整数列表
  • flag是辅助数字,利用for循环来确定辅助数字的最终值
  • 从1开始到辅助数字结束,在for循环里将递增的数字存入数组中
  • 最终返回res,算法结束

二、 调整数组顺序使奇数位于偶数前面(一)

1、题目速览

在这里插入图片描述

2、个人题解

2.1、解题思路

注意题目要求:奇数之间与偶数之间的相对位置不变,那么我的解题思路是:

  1. 新创建两个vector容器,对原数组里的元素值判断:
    • 若对2取余为零,证明是偶数,存入偶数容器里
    • 若对2取余不为零,则存入奇数容器里
  2. 由于要求所有奇数在前,那就利用for循环将偶数容器里的元素全部尾插到奇数容器内
  3. 最终的奇数容器就是最终排序的结果
2.2、代码实现
class Solution {
public:
    /\*\*
 \* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 \*
 \* 
 \* @param array int整型vector 
 \* @return int整型vector
 \*/
    vector<int> reOrderArray(vector<int>& array) {
        // write code here
        if(array.size()==0||array.size()==1)
            return array;
        vector<int>os;
        vector<int>js;
        for(int i=0;i<array.size();i++){
            if(array[i]%2==0)
                os.push\_back(array[i]);
            else
                js.push\_back(array[i]);
        }
        for(int i=0;i<os.size();i++){
            js.push\_back(os[i]);
        }
        return js;
    }
};

2.3、代码解析
  • 由于题目中原数组里元素个数可能为0或1,而且这种情况不需要排序,直接返回即可
  • osjs分别代表偶数和奇数容器
  • 对元素组中元素值判断,并插入到不同的容器中
  • 最后将偶数容器内的元素插入到奇数容器内并返回即可

三、 调整数组顺序使奇数位于偶数前面(二)

1、题目速览

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
[外链图片转存中…(img-Ve90YIyD-1713415886784)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值