leetcode刷题日记——轮转数组

[ 题目描述 ]:
leetcode刷题日记——轮转数组_第1张图片
[ 思路 ]:

  • 题目要求将一个整数数组向右轮转k个位置,右边超出的数,从左边插入
  • 因为是向右轮转k个位置,所以可以直接遍历数组,将其存放位置 index 加上 k ,但 index + k 可能会超出数组长度,即需要轮转到数组前面。由于数组元素个数为numsSize,也就是数组长度,我们可以通过 ( index + k) % numsSize取余来确定超出元素的位置
  • 运行如下
    leetcode刷题日记——轮转数组_第2张图片
void rotate(int* nums, int numsSize, int k) {
    int* temp=(int*)malloc(sizeof(int)*numsSize);
    for(int i=0;i

[ 优化 ]:

  • 题目的进阶提到可以用空间复杂度为 O(1) 的算法来解决这个问题,并且前面的时

你可能感兴趣的:(刷题日记,leetcode,算法,排序算法)