LC 189轮转数组Rotate Array 中等
把数组元素整体向右轮转 k 个位置,要求原地完成。
思路 三次翻转:先整体翻转,再分别翻转前 k 个和后 n-k 个元素。时间 O(n)、空间 O(1)。
class Solution: def rotate(self, nums: List[int], k: int) -> None: n = len(nums) k %= n def reverse(i: int, j: int) -> None: while i < j: nums[i], nums[j] = nums[j], nums[i] i += 1 j -= 1 reverse(0, n - 1) reverse(0, k - 1) reverse(k, n - 1)