力扣面试经典 150 题--轮转数组-菜鸡记录日记

题目:

首先暗含了信息就是  -----   k如果等于数组大小的话是 等于没有移动的  

第一就是要k化为    有效移动次数        x%=y  ---->  把x限定在y以内  (默认y<=x)

然后就是想到   是在数组内直接移动好写    还是创建新数组接收   最后复制到原数组方便

显然是后者 

END

以下是代码图

(动态分配比静态初始化用时要短...不过小题区别好像不是很大)

void rotate(int* nums, int numsSize, int k) {
    int *ans=malloc(sizeof(int)*numsSize);
    k = k % numsSize; // 处理k大于数组长度的情况  
                        // 因为k等于numsSize实际上就会等于没有旋转
                        // 不如直接取模 得到实际改变位置的旋转次数  
    for (int i = 0; i < numsSize; i++) {  
        int newIndex = (i + k) % numsSize; // 计算新索引  
        ans[newIndex] = nums[i]; // 将元素放入新数组  
    }  

    // 将新数组的内容复制回原数组  
    for (int i = 0; i < numsSize; i++) {  
        nums[i] = ans[i];  
    }  
    free(ans);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值