数组常见溢出易错点 c/c++ 附练习力扣189旋转数组

本文介绍了一种解决力扣189题“旋转数组”的方法,并详细解释了如何通过取余运算避免数组越界的问题。同时,文章还强调了在声明数组和进行数组操作时需要注意的边界条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 声明变量时

int temp[k];

这里就要保证k是大于零的, 否则会出错

2. 加减乘除时

int temp[k-1];
int temp[k+1];
int tmep[2*k]

3. 字符串最后一个为"\0",要一个下标

char ch[2] = "a";

4. 移动时没有考虑越界情况

k = k %nums.size();//避免越界

练习题目

:力扣189. 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]

void rotate(vector<int>& nums, int k){
    k = k % nums.size();
    if(k == 0){
        return;
    }
    int temp[k];
    for (int i = 0; i < k; i++){
        temp[i] = nums[nums.size() - k + i];
    }
    for (int i = nums.size() - k - 1; i >= 0; i--){
        nums[i + k] = nums[i];
    }
    for (int i = 0; i < k; i++){
        nums[i] = temp[i];
    }
}

小笑话: 我这道题目一开始左右不分, 哎~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值