189. 轮转数组
-
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数
-
示例 1:
- 输入: nums = [1,2,3,4,5,6,7], k = 3
- 输出: [5,6,7,1,2,3,4]
-
示例 2:
- 输入:nums = [-1,-100,3,99], k = 2
- 输出:[3,99,-1,-100]
思路
- 首先计算有效轮转次数,轮转 k 次和轮转 k % len(nums) 次效果相同
- 向右轮转 k 个位置,相当于将数组的最后 k 个元素移动到前面,即新数组 = nums[-k:] + nums[:-k],注意前后拼接顺序
实现
bash
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: None Do not return anything, modify nums in-place instead.
"""
k = k % len(nums)
nums[:] = nums[-k:] + nums[:-k]
return nums
- 时间复杂度: O(n)
- 空间复杂度: O(1)