我的解法:插入擦除
1234567(k=1)
变成7123456
,将前6个移到尾部。
1234567(k=2)
变成6712345
,将前5个移到尾部。
1234567(k=3)
变成5671234
,将前4个移到尾部。
…
1234567(k=10)
变成5671234
,将前4个移到尾部。
前l个 = n-k%n
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
int l = n-k%n;
nums.insert(nums.end(),nums.begin(),nums.begin()+l);
nums.erase(nums.begin(),nums.begin()+l);
}
};
翻转解法
nums = "----->-->"; k =3
result = "-->----->";
reverse "----->-->" we can get "<--<-----"
reverse "<--" we can get "--><-----"
reverse "<-----" we can get "-->----->"
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k = k % nums.size();
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin() + k);
reverse(nums.begin() + k, nums.end());
}
};