力扣
时间复杂度:O(N)
空间复杂度:O(1)
void swap(int* nums,int left,int right)
{
while(left<right)
{
nums[left]^=nums[right];
nums[right]^=nums[left];
nums[left]^=nums[right];
left++;
right--;
}
return;
}
void rotate(int* nums, int numsSize, int k)
{
if(numsSize<=k)
{
k=k%numsSize;
}
swap(nums,numsSize-k,numsSize-1);
swap(nums,0,numsSize-k-1);
swap(nums,0,numsSize-1);
}
原理:
nums = {1,2,3,4,5},k=2
后k个倒置 {1,2,3,5,4}
前面逆置 {3,2,1,5,4}
整体逆置 {4,5,1,2,3}