283. Move Zeroes¶
Tags: #array #twopointers #easy
Problem Statement¶
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.
Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]
My Approach¶
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
for i in nums:
if i == 0:
nums.remove(i)
nums.append(i)
nums
array once and if there is an element 0, we remove it and append it to the end of the list. However, I came up with another solution that gets rid of the loop.
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
if 0 in nums:
count = nums.count(0)
nums[:] = [i for i in nums if i!= 0]
nums.extend([0]*count)
nums
array and if there is, we count the number of zero's in count
. Then, we change the nums
array in place by using list comprehension (Note: the nums[:]
is required here since the default list comprehension would make a new array and point to that instead ) and remove all the zeros. Then using extend()
, we add the zeros in the end, multipled by count
for every zero we have.
Personal Thoughts¶
This is another hacky solution since I mostly utilised python methods and functionality. Will try to solve using a more conventional approach on a later date.