每日一题——189. 旋转数组

189. 旋转数组

分类:

  • 数组

数组循环移位经典题

class Solution { // 翻转数组
public:
    void reverse(vector<int>& nums, int i, int j){
        int t;
        while(i < j){
            t = nums[i];
            nums[i++] = nums[j];
            nums[j--] = t;
        }
    }
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        k = k % n; // 处理当k大于数组长度的情况
        reverse(nums, 0, n-k-1);
        reverse(nums, n-k ,n-1);
        reverse(nums, 0, n-1);
    }
};
/* 17% **/
/* i++; j--; 拿到外面来就是98% 迷惑**/
class Solution { // 复制数组
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> res(n);
        for(int i=0; i<n; i++){
            res[(i+k)%n] = nums[i];
        }
        nums = res;
    }
};/* 50% **/

还有一种,记录被覆盖位置,交换

2021/01/08

posted @ 2021-01-08 11:46  vwmin  阅读(45)  评论(0)    收藏  举报