189. Rotate Array
问题描述
解决方案
下面两种方法的原理是相同的
// class Solution {
// public:
// void rotate(vector<int>& nums, int k) {
// k%=nums.size();
// reverse(nums.begin(),nums.end());
// reverse(nums.begin(),nums.begin()+k);
// reverse(nums.begin()+k,nums.end());
// }
// };
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int begin=0;
int end=nums.size()-1;
k%=nums.size();
reversearray(nums,begin,end);
reversearray(nums,begin,begin+k-1);
reversearray(nums,begin+k,end);
}
void reversearray(vector<int>& nums,int begin,int end){
while(begin<end)
{
swap(nums[begin++],nums[end--]);
}
}
};
作者:弦断
出处:http://www.cnblogs.com/ucas/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。