DEV Community

Cover image for Solving "Move Zeroes" Leet code Question.
Leetcode
Leetcode

Posted on

Solving "Move Zeroes" Leet code Question.

283. Move Zeroes

Type: Easy
Liked by 15.2K
Disliked by 380.

Companies that asked this question
Companies: No of times asked
Yandex 8
Apple 3
Amazon 3
Facebook 11
Bloomberg 6
Google 4
Adobe 3
Microsoft 2
Uber 2
Oracle 2
Splunk 2
Tesla 2
tcs 6
Expedia 4
VMware 3
Goldman Sachs 3
ByteDance 3
JPMorgan 3
TikTok 3
LinkedIn 2
Yahoo 2
IBM 2
Morgan Stanley 2
ServiceNow 2
Salesforce 2
Zoho 2
Infosys 2
Nvidia 2
Samsung 2
Wix 1

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.

Example 1:
Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:
Input: nums = [0]
Output: [0]

Constraints:

1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1

Intuition

We want to move all the zeros to the end of the array while keeping the non-zero elements in their relative order.

Approach

We maintain two pointers: i to iterate through the array and nonZeroIndex to keep track of the position where we should insert non-zero elements. When we encounter a non-zero element, we swap it with the element at nonZeroIndex and then increment nonZeroIndex.

Complexity

Time complexity:
The code iterates through the array once, so the time complexity is O(n), where n is the length of the array.

Space complexity:
The code uses a constant amount of extra space, so the space complexity is O(1).

Code

class Solution {
    public void moveZeroes(int[] nums) {
        int nonZeroIndex = 0; 
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                int temp = nums[i];
                nums[i] = nums[nonZeroIndex];
                nums[nonZeroIndex] = temp;
                nonZeroIndex++; 
            }
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

Happy coding,
shiva

Top comments (0)