Skip to content
On this page

283. Move Zeroes share

![][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.

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

Follow up: Could you minimize the total number of operations done?

Solution:

java
public class MoveZeroes {
    public void moveZeroes(int[] nums) {
        int index = 0, end = nums.length;
        for (int i = 0; i < end; i++) {
            if (nums[i] != 0)
                nums[index++] = nums[i];
        }
        while (index < end)
            nums[index++] = 0;
    }
}

rs
impl Solution {
    pub fn move_zeroes(nums: &mut Vec<i32>) {
        let (mut index, mut end) = (0, nums.len());

        while index < end {
            if nums[index] == 0 {
                nums.remove(index);
                nums.push(0);
                end -= 1;
            } else {
                index += 1;
            }
        }
    }
}

...


Released under the MIT License.