给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
正解:
遍历数组,遇见0就弹出并且在数组后加0,由于数组长度会变化,所以重新定义idx,当有元素弹出后(从前往后遍历,弹出的是第一个元素),那么下一次继续遍历新第一个元素(i-z)(本来该遍历的位置减去(弹出的个数))
class Solution: def moveZeroes(self, nums: List[int]) -> None: z=0 for i in range(len(nums)): idx=i-z if nums[idx]==0: nums.pop(idx) nums.append(0) z+=1 return nums