189. Rotate Array

问题描述

解决方案

下面两种方法的原理是相同的

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


class Solution {
public:
    void rotate(vector<int>& nums, int k) {  
        int begin=0;
        int end=nums.size()-1;
        k%=nums.size();
        reversearray(nums,begin,end);
        reversearray(nums,begin,begin+k-1);
        reversearray(nums,begin+k,end);
    }
    void reversearray(vector<int>& nums,int begin,int end){
        while(begin<end)
        {
            swap(nums[begin++],nums[end--]);
        }
    }
};
posted @ 2016-08-23 17:34  弦断  阅读(91)  评论(0编辑  收藏  举报