9.leetcode题目189: Rotate Array

来源:互联网 发布:树莓派3b gpio编程 编辑:程序博客网 时间:2024/06/03 23:44

这道题一直做不好。。

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].

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        if(k==0||nums.empty()){
        return;
        }
        k=k%(nums.size());
        while(k--){
            int last=nums[nums.size()-1];
            for(int i=nums.size()-1;i!=0;i--){
                nums[i]=nums[i-1];
            }
            nums[0]=last;
        }
        return ;
    }
};


参考别人的:

  1. 把后面k个元素取出,保存到一个新的数组中。
  2. 把前面的(n - k)个元素取出,添加到上面新数组的末尾。
  3. 用新数组替换老数组。
class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        if(k==0||nums.empty()){
        return;
        }
        k=k%(nums.size());
        vector<int> Arota(nums.begin()+nums.size()-k,nums.end());
       Arota.insert(Arota.end(), nums.begin(), nums.begin() + nums.size() - k);
       nums=Arota;
        return ;
    }
};


网上别人的:

1.


0 0
原创粉丝点击