导航

LeetCode 189. Rotate Array

Posted on 2016-04-13 14:40  CSU蛋李  阅读(94)  评论(0)    收藏  举报

Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

采用三段式,先全部翻转,然后翻转0到k(包括k),最后翻转k到末尾

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