c++
class Solution {
public:
void rotate(vector<int>& nums, int k) {
if (nums.empty())
return;
k = k % nums.size();
if (k == 0)
return;
k = nums.size() - k;
for (int i = 0; i < k; ++i) {
nums.push_back(nums[0]);
nums.erase(nums.begin());
}
}
};
class Solution {
public:
void rotate(vector<int>& nums, int k) {
if (nums.empty())
return;
k = k % nums.size();
if (k == 0)
return;
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin() + k);
reverse(nums.begin()+k, nums.end());
}
};
python
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: void Do not return anything, modify nums in-place instead.
"""
if not nums:
return
k = k%len(nums)
if k==0:
return
nums[0:len(nums)] = nums[0:len(nums)][::-1]#or nums.reverse()
# nums = nums[::-1] didn't pass the online judge
nums[0:k] = nums[0:k][::-1]
nums[k:] = nums[k:][::-1]
reference:
https://leetcode.com/discuss/98234/three-times-reverse-c