题目
代码
void reverse(int* nums,int began,int end)
{
int tmp;
while(began<end)
{
tmp= nums[began];
nums[began]=nums[end];
nums[end]=tmp;
began++;
end--;
}
}
void rotate(int* nums, int numsSize, int k) {
k=k%numsSize;
reverse(nums,0,numsSize-k-1);//(数组,起始下标,终止下标)
reverse(nums,numsSize-k,numsSize-1);
reverse(nums,0,numsSize-1);
}
思路
解题思路:使用三次逆转法,让数组旋转k次
- 先逆转前numsSize-k个
- 再逆转后k个
- 最后整体转