
做题思路:
超出时间限制
void rotate(int* nums, int numsSize, int k){
if(numsSize==1)
return;
for(int i = 0;i < k;i++) {
int temp2 = nums[0];
int temp3 = 0;
for(int i = 1;i < numsSize;i++) {
temp3 = nums[i];
nums[i] = temp2;
temp2 = temp3;
}
nums[0] = temp3;
}
}
官方思路1:
void rotate(int* nums, int numsSize, int k){
if(numsSize==1)
return;
k %= numsSize;
int* arr=(int*)malloc(numsSize*sizeof(int));
int i = 0;
for(i = 0;i < numsSize;i++) {
if(i-k<0)
arr[i] = nums[i-k+numsSize];
else
arr[i] = nums[i-k];
}
for(i = 0;i < numsSize;i++)
nums[i] = arr[i];
}

官方思路2:
void reverse(int*nums, int start, int end) {
while(start < end) {
int temp = nums[end];
nums[end] = nums[start];
nums[start] = temp;
start++; end--;
}
}
void rotate(int* nums, int numsSize, int k){
k%=numsSize;
reverse(nums, 0, numsSize-k-1);
reverse(nums, numsSize-k, numsSize-1);
reverse(nums, 0, numsSize-1);
}