"""
Move Zeros #283
https://leetcode.com/problems/move-zeroes/

Given an array nums, write a function to move all 0's 
to the end of it while maintaining the relative order of the non-zero elements.

Example:

Input: [0,1,0,3,12]
Output: [1,3,12,0,0]
Note:

You must do this in-place without making a copy of the array.
Minimize the total number of operations.
"""

def moveZeroes(self, nums: List[int]) -> None:
    """
    Time: 48ms (95.97%)
    Mem: 13.9MB (100.0%)
    """
    lastZero = 0
    for i in range(len(nums)):
        if nums[i] != 0:
            nums[i], nums[lastZero] = nums[lastZero], nums[i]
            lastZero += 1