类型:数组
-
- 旋转数组 💛 ⭐
https://leetcode-cn.com/problems/rotate-array/
❓ 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4]
💡 整体翻转 + 局部翻转
先将整个数组翻转,再分别翻转 [0,k%n − 1] 和 [k%n, n - 1]。
class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) k %= n if k == 0: return # 翻转整个数组 nums[:] = nums[::-1] # 翻转 0 - k-1 nums[: k] = nums[k - 1: : -1] # 翻转 k - n-1 nums[k:] = nums[n - 1: k - 1: -1]时间复杂度:O(n),空间复杂度:O(1)