目录
基本方法:开辟辅助数组
运行结果
代码
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int N = nums.size();
k %= N;
vector<int> tmp(nums.end() - k, nums.end());
for(int i = N - k - 1; i != -1; --i){
nums[i + k] = nums[i];
}
for(int i = 0; i != k; ++i) nums[i] = tmp[i];
}
};
方案2:轮转替换
运行结果
代码
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int N = nums.size();
if (k % N == 0) return;
int count = N, start = 0, voyager = 0, tmp = nums[voyager];
while (count--) {
swap(tmp, nums[voyager = (voyager + k) % N]);
voyager == start ? tmp = nums[voyager = ++start] : NULL;
}
}
};