leetcodeブラシ問題--基礎配列--回転配列(C)
1067 ワード
// O(n), 92%
void rotate(int* nums, int numsSize, int k) {
k = k%numsSize;
int temp=0;
int i=0, j=numsSize-1;
while(i < j){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
i = 0;
j = k-1;
while(i < j){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
i = k;
j = numsSize-1;
while(i < j){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
}
(2)余分な空間(非その場)を用いて,後k個の要素をそのまま新しい配列にコピーし,前の要素をそのまま新しい配列にコピーする.