So there's a problem in leetcode that's pretty simple but the solution is incorrect for the second: (OG question: 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.
For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [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. )
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
k = 0
for ele in nums[:]:
if ele == 0:
nums.remove(0)
k += 1
nums.extend([0]*k)
class Solution(object): -------Incorrect solution
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
k = 0
for ele in nums:
if ele == 0:
nums.remove(0)
k += 1
nums.extend([0]*k)
Why does that make a difference please?