给定一个数组,将数组中的元素向右移动 k k k个位置,其中 k k k 是非负数。
进阶:
示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2skh7/
来源:力扣(LeetCode)
要考虑k大于序列长度的情况,所以k对于length要进行取余操作。
即 k = k mod length, k = k%n 。
一个数组向右平移k个单位,从结果进行分析:
因此考虑通过反转数组来进行实现:
代码如下:
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
# 反转实现
n = len(nums)
k = k%n
nums.reverse()
self.reverseL(nums, 0, k-1)
self