class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
main idea: by default set idx =0 as non-zero val; loop through whole array, if find non zero val, assign it to idx=0 ; idx ++; then fill out the rest start from idx
time O(N) space O(1)
"""
if not nums:
return
nonz = 0
for i in range(len(nums)):
if nums[i]:
nums[nonz] = nums[i]
nonz += 1
for j in range(nonz,len(nums)):
nums[j] = 0
optimization
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
main idea: by default set idx =0 as non-zero val; loop through whole array, if find non zero val, swap with val at idx=0 ; idx ++; loop until nums ends. here we do not need to have additional loop
time O(N) space O(1)
"""
if not nums:
return
nonz = 0
for i in range(len(nums)):
if nums[i]:
nums[nonz],nums[i] = nums[i],nums[nonz]
nonz += 1