LC 速查

HOT 100索引 › B5 普通数组 Array

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)
← 上一题 合并区间除了自身以外数组的乘积 下一题 →