一、189. 旋转数组
1.1、题目描述
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
tmp = [0 for _ in range(len(nums))]
for i in range(len(nums)):
# 原本数组里下标为 ii 的我们把它放到 (i+k)\%数组长度(i+k)%数组长度 的位置
tmp[(i+k)%len(nums)] = nums[i]
for i in range(len(nums)):
nums[i] = tmp[i]
1.2.2、使用环状替换 — 让座位
第i个同学去找第i+k+1
同学的位置, i+k+1
同学被挤出,寻找他的位置 分两种情况
- (1)、i同学经过多次遍历回到原位置
- (2)、未回到原位置(k=2)
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
count = 0 # 记录替换的位置
ln = len(nums)
k = k % ln
start = 0
while start None:
while start
关注
打赏