LeetCode:(Python)(Array)Rotate Array

許博淳
數據共筆
Published in
Sep 26, 2024

題目連結: https://leetcode.com/problems/rotate-array/description/?envType=study-plan-v2&envId=top-interview-150

題意說明:

  • 把 nums中最後 k個數字移到 nums的開頭

注意事項:

  • 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] = []

--

--