1. 程式人生 > >7/100. Move Zeroes

7/100. Move Zeroes

在這裡插入圖片描述

class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        zero = 0 #記錄第一個“0”的位置
        for i in range(len(nums)):
            if nums[i] != 0:
                nums[i], nums[zero] = nums[zero],nums[i]
                zero += 1
            

更優解法:

class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        last = None
        for i in range(len(nums)):
            if nums[i] == 0 and last is None:
                last = i
            if nums[i] != 0 and last is not None:
                nums[i], nums[last] = 0, nums[i]
                last += 1

解題心得:

  • 若記錄“0”的最末位置,則還需記錄“0”的個數,不如直接記錄“0”的第一個位置。