【leetcode100-015】【数组】轮转数组

【题干】

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

【思路】

经典老题,就不从数学角度证明了,三次翻转解决问题。

【题解】

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

你可能感兴趣的:(leetcode100思路整理,算法,数据结构)