189. Rotate Array

来源:互联网 发布:川普 好莱坞 知乎 编辑:程序博客网 时间:2024/06/16 02:37

这里写图片描述

    void rotate(vector<int>& nums, int k) {        vector<int> res=nums;        for(int i=0;i<nums.size();i++){            nums[(i+k)%nums.size()]=res[i];        }        }

可以先将前n-k个翻转一下,再将后k个翻转一下,最后将整个字符翻转一下。

    void rotate(vector<int>& nums, int k) {        if(nums.empty()||(k%=nums.size())==0) return;         int n=nums.size();        reverse(nums.begin(),nums.begin()+n-k);        reverse(nums.begin()+n-k,nums.end());        reverse(nums.begin(),nums.end());          }
    void rotate(vector<int>& nums, int k) {        if(nums.empty()||(k%=nums.size())==0) return;         int n=nums.size();        for(int i=0;i<n-k;i++)   {            nums.push_back(nums[0]);            nums.erase(nums.begin());        }    }

这里写图片描述

    void rotate(vector<int>& nums, int k) {       if(nums.empty()) return;        int n=nums.size(),start=0;        while(n&&(k%=n)){            for(int i=0;i<k;i++){                swap(nums[i+start],nums[n-k+i+start]);            }            n-=k;            start+=k;        }    }
原创粉丝点击