LeetCode 189. Rotate Array

来源:互联网 发布:淘宝开店缴纳保证金 编辑:程序博客网 时间:2024/04/30 04:53

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.


Have two methods there, nothing special

#include <vector>#include <iostream>#include <algorithm>using namespace std;void rotate(vector<int>& nums, int k) {    k = k % nums.size();  // this is the only place needs attention.    reverse(nums.begin(), nums.end());    reverse(nums.begin(), nums.begin() + k);  // in-place    reverse(nums.begin() + k, nums.end());}void rotateII(vector<int>& nums, int k) {    int size = nums.size();    for(int i = 0; i < size - k; ++i) {        nums.push_back(nums[i]);    }    vector<int> newnums(nums.begin() + size - k, nums.end());    nums = newnums;}int main(void) {    vector<int> nums;    nums.push_back(1);    nums.push_back(2);    nums.push_back(3);    nums.push_back(4);    nums.push_back(5);    nums.push_back(6);    nums.push_back(7);    rotateII(nums, 3);    for(int i = 0; i < nums.size(); ++i) {        cout << nums[i] << endl;    }    cout << endl;}


0 0
原创粉丝点击