0
点赞
收藏
分享

微信扫一扫

@LeetCode 189.轮转数组

古月无语 2022-02-05 阅读 153
leetcode

力扣 

时间复杂度: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}

举报

相关推荐

0 条评论