Two Pointers
Move Zeroes
easy
DESCRIPTION (inspired by Leetcode.com)
Given an integer array nums, write a function to rearrange the array by moving all zeros to the end while keeping the order of non-zero elements unchanged. Perform this operation in-place without creating a copy of the array.
Input:
nums = [2,0,4,0,9]
Output:
[2,4,9,0,0]
Code Editor
Java
public class Solution {
public void moveZeroes(int[] nums) {
// Your code goes here
}
}Run your code to see results here
Have suggestions or found something wrong?
Explanation
We can solve this problem by keeping a pointer i that iterates through the array and another pointer nextNonZero that points to the position where the next non-zero element should be placed. We can then swap the elements at i and nextNonZero if the element at i is non-zero. This way, we can maintain the relative order of the non-zero elements while moving all the zeroes to the end of the array.
Solution
Visualization
Java
Try these examples:
public static void moveZeroes(int[] nums) {int nextNonZero = 0;for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {int temp = nums[nextNonZero];nums[nextNonZero] = nums[i];nums[i] = temp;nextNonZero++;}}}
move zeros
0
0 / 13