小白刷题力扣-189. 轮转数组

71 阅读1分钟

189. 轮转数组 - 力扣(LeetCode)

image.png

思路1:

void reverse(int *nums,int left,int right){
    
    while(left<right){
        int temp=nums[left];
        nums[left]=nums[right];
        nums[right]=temp;
        right--;
        left++;
    }
}
void rotate(int* nums, int numsSize, int k){
    if(k>=numsSize){
        k%=numsSize;
    }
    reverse(nums,numsSize-k,numsSize-1);
    reverse(nums,0,numsSize-k-1);
    reverse(nums,0,numsSize-1);
}

思路2:

void rotate(int* nums, int numsSize, int k){
        int newarr[numsSize];
        for(int i=0;i<numsSize;i++){
            newarr[(k+i)%numsSize]=nums[i];
        }
        for(int i=0;i<numsSize;i++){
            nums[i]=newarr[i];
        }
}