leecode 189. 轮转数组

Problem: 189. 轮转数组

思路

vocal O(1)的解法,太强了, 完全想不到是咋想到的

解题方法

三次递归交换,太妙了

复杂度

时间复杂度:

\(O(\frac{3}{2}n)\)

空间复杂度:

\(O(1)\)

Code

class Solution {
public:
    void change(vector<int>& nums,int start,int end){
       while (start<end)
       {
         swap(nums[start],nums[end]);
         start++; end--;
       }
    }
    void rotate(vector<int>& nums, int k) {
      int  n=nums.size(),a=k%n;
       change(nums,0,n-1);
       change(nums,0,a-1);
       change(nums,a,n-1);
    }
};
posted @ 2024-01-20 12:23  oxidationreaction  阅读(12)  评论(0)    收藏  举报