Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Note that you must do this in-place without making a copy of the array.
Solution
Double Pointer / Fast And Slow Pointer
-
Same with https://www.emperinter.info/2022/03/15/remove-duplicates-from-sorted-list/
-
we need to change the value to
0
after k.
Code
- submit code
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
slow = 0
fast = 0
while(fast < len(nums)):
if(nums[fast] != 0):
nums[slow] = nums[fast]
slow += 1
fast += 1
for m in range(slow,len(nums)):
nums[m] = 0
- full code
class Solution:
def moveZeroes(self, nums):
slow = 0
fast = 0
while(fast < len(nums)):
if(nums[fast] != 0):
nums[slow] = nums[fast]
slow += 1
fast += 1
for m in range(slow,len(nums)):
nums[m] = 0
# print(nums)
nums = [0,1,0,3,12]
S = Solution()
print(S.moveZeroes(nums))