1. 程式人生 > >旋轉陣列(python實現)

旋轉陣列(python實現)

問題:
給定一個數組,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。
說明:
儘可能想出更多的解決方案,至少有三種不同的方法可以解決這個問題。
要求使用空間複雜度為 O(1) 的原地演算法。

方法一

class Solution:
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.
        """
long = len(nums) newk= k % long temp = [] for i in range(long): temp.append(nums[i-newk]) for j in range(long): nums[j] = temp[j]

解題思路
陣列無論怎樣移動,元素之間的順序是不會變得,只要找到最後的狀態即可;
使用一個空陣列 temp = [] 儲存 nums移動後的狀態,然後一對一複製過去即可。

方法二

class Solution
: def rotate(self, nums, k): """ :type nums: List[int] :type k: int :rtype: void Do not return anything, modify nums in-place instead. """ if k == 0 or len(nums) == 0: return k = k % len(nums) nums[:] = nums[len(nums)-k:]+
nums[:len(nums)-k]

解題思路:
nums依照k進行分片,然後進行合併