题目
代码(首刷部分看解析)
时间复杂度为O(n),空间复杂度为O(n)
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int sz = nums.size();
vector<int> tmp(sz);
for(int i = 0; i < sz; i++) {
tmp[(i+k)%sz] = nums[i];
}
nums.assign(tmp.begin(), tmp.end());
}
};
代码(首刷看解析,翻转数组)
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());
}
};
代码(8.31 二刷自解)
class Solution {
public:
vector<int> solve(int n, int m, vector<int>& a) {
reverse(a.begin(), a.end());
reverse(a.begin(), a.begin()+m);
reverse(a.begin()+m, a.end());
return a;
}
};