189. 轮转数组(中等)-普通数组

2023-05-21  本文已影响0人  MatrixZ

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
使用空间复杂度为 O(1) 的 原地 算法

分析

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        def reverse(nums, start, end):
            
            while start < end:
                nums[start], nums[end] = nums[end], nums[start]
                start += 1
                end -= 1
        
        n = len(nums)
        k %= n
        reverse(nums, 0, n - 1)
        
        reverse(nums, 0, k - 1)
        # 陷阱1, 闭区间是包含边界的
        reverse(nums, k, n - 1)


上一篇 下一篇

猜你喜欢

热点阅读