标签 反转 下的文章

题目链接:旋转数组

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

方法一:使用额外数组

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        vector<int> ans(nums.size());
        for (int i = 0;i < nums.size();i++) {
            ans[(i+k) % nums.size()] = nums[i];
        }
        nums = ans;
    }
};

方法二:反转

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        k = k%nums.size();
        reverse(nums.begin(),nums.end());
        reverse(nums.begin(),nums.begin()+k);
        reverse(nums.begin()+k,nums.end());
    }
};