Leetcode刷题283- 移动零

Leetcode刷题283- 移动零_第1张图片(来源leetcode)

方法1:把数组中j个非零元素存放在数组的前j项,之后把后边的元素设置为0即可,如下:

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        j = 0
      	#利用变量j,把非零元素放在数组前边
        for i in range(len(nums)):
        	if nums[i] != 0:
        		nums[j] = nums[i]
        		j += 1
        #后边的元素设置为0
        for i in range(j, len(nums)):
        	nums[i] = 0

方法2: 当发现数组中出现0, 第一步在末尾增加0,第二步删除此0

class Solution:
    def moveZeroes(self, nums: List[int]) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        for i in range(len(nums)):
        	if nums[i] == 0:
        		nums.append(0)
        		nums.remove(nums[i])

方法3: 快慢指针交换思想,快指针指向当前元素,慢指针前边的元素全为非0

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

你可能感兴趣的:(疯狂刷题)