1.旋转数组
/* 解题思路:使用三次逆转法,让数组旋转k次 1. 先整体逆转 2. 逆转子数组[0, k - 1] 3. 逆转子数组[k, size - 1] */
void reverse(int* nums, int begin, int end)
{
while(begin < end)
{
int tmp = nums[begin];
nums[begin] = nums[end];
nums[end] = tmp;
++begin;
--end;
}
}
// 三趟逆置倒的思路
void rotate(int* nums, int numsSize, int k){
if(k > numsSize)
{
k %= numsSize;
}
reverse(nums, 0, numsSize-1);
reverse(nums, 0, k-1);
reverse(nums, k, numsSize-1);
}