面试经典 150 题 6 —(数组 / 字符串)— 189. 轮转数组

189. 轮转数组

面试经典 150 题 6 —(数组 / 字符串)— 189. 轮转数组_第1张图片

方法一
class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int numsLength = nums.size();

        vector<int> newArr(numsLength);
        for(int i = 0; i < numsLength; i++){
            newArr[(i+k)%numsLength] = nums[i];
        }

        nums.assign(newArr.begin(), newArr.end());
    }
};
方法二
class Solution {
public:
    void reverse(vector<int> &nums, int start, int end){
        while(start < end){
            swap(nums[start], nums[end]);
            start++;
            end--;
        }
    }
    void rotate(vector<int>& nums, int k) {
        k %= nums.size();
        reverse(nums, 0, nums.size()-1);
        reverse(nums, 0, k-1);
        reverse(nums, k, nums.size()-1);
    }
};

你可能感兴趣的:(leetcode,面试,算法,c++,leetcode)