题目:
给定一个整数数组 nums
,将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
解题思路:1. 最简单的python交换语法;2. 使用额外的数组;3. 环状替换(根据规则,位置 0 的元素会放至 (0+k) mod n 的位置,令 x=(0+k) mod n,此时交换 temp 和 nums[x],完成位置 x 的更新。然后考察位置 x,并交换 temp 和 nums[(x+k) mod n],从而完成下一个位置的更新。不断进行上述过程,直至回到初始位置 0);
Python解法:
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
if k := (k % len(nums)):
nums[:k], nums[k:] = nums[-k:], nums[:-k]
# 海象运算符:避免多次运行len()