思路
循环数组整体平移k个单位时,可以通过先整体翻转,接着再对两个单独子序列进行翻转,便可以实现原地平移。
代码
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int len = nums.size();
int i,j,temp;
k%=len;
for(i=0,j=len-1;i<j;++i,--j){
swap(nums[i],nums[j]);
}
for(i=0,j=k-1;i<j;++i,--j){
swap(nums[i],nums[j]);
}
for(i=k,j=len-1;i<j;++i,--j){
swap(nums[i],nums[j]);
}
}
};