題目連結: https://leetcode.com/problems/rotate-array/description/?envType=study-plan-v2&envId=top-interview-150
題意說明:
注意事項:
- k 可能大於 nums的長度,例如以下例子可以看到,k = nums的長度時,就會變回完全相同的結果
- 因此可以將 k 先對 nums的長度取餘數
nums = [-1,-100,3,99], k = 4
#1: nums = [99, -1, -100,3]
#2: nums = [3, 99, -1, -100]
#3: nums = [-100, 3, 99, -1]
#4: nums = [-1, -100, 3, 99]
- 不需要回傳任何數值,直接改 nums這個 list
實作程式碼
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
length = len(nums)
#當 k比 nums長度還長就取餘數
if k > length:
k = k%length
sub = length-k
# 把 nums想成 a+b
# 在 nums後加上 a -> a+b+a
nums.extend(nums[0:sub])
# 把 nums最前面的 a清除 -> b+a
nums[0:sub] = []