283. 移动零

  1. 题目链接
  2. 解题思路:将区域划分成非0区域,0区域,待遍历区域,待遍历区域就是还没有遍历到的数集合。
    • 非0区域用L表示,即[0, L - 1]是非0区域,初始值L = 0
    • 待遍历区域,就是[i, n - 1],其中n是数组长度
    • 0区域就是[L, i - 1]
    • 直接看代码
  1. 代码

    class Solution:
        def moveZeroes(self, nums: List[int]) -> None:
            L = 0        # [0, L - 1] 都是非0区域
            for i in range(len(nums)):
                
                if nums[i] == 0:
                    continue
                # 非0,那么要移到非0区域,同时非0区域扩大
                nums[L] = nums[i]
                nums[i] = nums[i] if i == L else 0   # 9和10行可以替换成普通的交换两个数
                L += 1
    
posted @ 2025-02-17 10:54  ouyangxx  阅读(11)  评论(0)    收藏  举报