您的位置:首页 > 编程语言 > C语言/C++

leetcode_189_Rotate Array(easy)(C++)

2016-03-16 14:05 483 查看
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]
.

Note:

Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

[show hint]

Related problem: Reverse Words in a String II

第一种:

class Solution {

public:

    void rotate(vector& nums, int k) {

        

        

       const int n = nums.size();

       k = k % n;

       vector backup(nums.end() - k, nums.end());

       for(int i = n - 1 ; i >= k ; --i)

       {

           nums[i] = nums[i-k];

       }

       for( int i = 0; i < k; i++)

       {

           nums[i] = backup[i];

       }

    }

};

第二种:

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

vector中的begin指的是容器的第一个元素,end指的容器中最后一个元素的下一个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode