Python
法1
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
mol = k % len(nums)
if mol > 0:
nums.reverse()
i = 0
j = mol - 1
while i < j:
nums[i], nums[j] = nums[j], nums[i]
i += 1
j -= 1
i = mol
j = len(nums) - 1
while i < j:
nums[i], nums[j] = nums[j], nums[i]
i += 1
j -= 1
法2:重点学习该种解法
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
l = len(nums)
if k > l:
k = k % l
nums.reverse()
nums[:k] = reversed(nums[:k])
nums[k:] = reversed(nums[k:])
Java
class Solution {
public void rotate(int[] nums, int k) {
int tmp;
k = k % nums.length;
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
}
public void reverse(int[] nums, int i, int j) {
while (i < j) {
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
++i;
--j;
}
}
}