LeetCode 283. 移動零(Python)

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

示例:

輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]

 思路:定義一個指針k,記錄從0到k處的值都是已排好的非零數,遍歷時遇到0跳過,遇到非零的數時將其交換至k位置,最後再加上限定條件i不等於k目的是針對全不爲0的特殊情況

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        k = 0   # 0到k的元素都是已排好非零數
        for i in range(len(nums)):
            if nums[i] != 0:
                if i!= k:   # 優化全不爲0時的情況
                    nums[k], nums[i] = nums[i], nums[k]
                    k = k + 1
                else:
                    k = k + 1
        
        return nums

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章