Rotate Array

来源:互联网 发布:javlib最新域名 编辑:程序博客网 时间:2024/06/03 16:36

一、题目要求

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

二、代码实现

解法1:

 void rotate(vector<int>& nums, int k) {        if(nums.size()<2 || k<1) return;int i,val;k=k%nums.size();std::rotate(nums.begin(),nums.end()-k,nums.end());     }
解法2:

void rotate(vector<int>& nums, int k) {        if(nums.size()<2 || k<1) return;int i,val;queue<int> st;k=k%nums.size();if(k==0)return ;for(auto tmp=nums.end()-1;tmp>nums.begin();tmp--){if(nums.end()-tmp<=k){st.push(*tmp);}if(tmp-nums.begin()>=k){*tmp=*(tmp-k);}else{if(!st.empty()){*tmp=st.front();st.pop();}}}*nums.begin()=st.front();st.pop();    }



0 0