```
def moveZeroes(self, nums):
cur = 0
for i in xrange(len(nums)):
if nums[i]:
nums[cur] = nums[i]
cur += 1
for i in xrange(cur, len(nums)):
nums[i] = 0
```

Simple solution with a maximum of n assignments. Use two pointers to shift down non-zero numbers, then fill in the rest with zeros.