Description

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. Return the result as an array.

Examples

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

Using a two-pointer approach, non-zero elements (1, 3, 12) are shifted left to fill positions 0-2, then the remaining positions are filled with zeros.

Input:nums = [0]
Output:[0]
Explanation:

A single-element array is already sorted. The only element 0 stays in place as there are no other elements to compare or move.

Input:nums = [5, -2, 0, 0, 8, 0, -1]
Output:[5, -2, 8, -1, 0, 0, 0]
Explanation:

The non-zero elements (5, -2, 8, -1) maintain their relative order and are moved to the front, while all three zeros are moved to the end of the array.

Constraints

  • 1 ≤ nums.length ≤ 10⁴
  • -2³¹ ≤ nums[i] ≤ 2³¹ - 1

Ready to solve this problem?

Practice solo or challenge other developers in a real-time coding battle!