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
class Solution {
// public void moveZeroes(int[] nums) {
// int n = nums.length, left = 0, right = 0;
// while (right < n) {
// if (nums[right] != 0) {
// swap(nums, left, right);
// left++;
// }
// right++;
// }
// }
// public void swap(int[] nums, int left, int right) {
// int temp = nums[left];
// nums[left] = nums[right];
// nums[right] = temp;
// }
// public void moveZeroes(int[] nums) {
// int insertPos = 0;
// for(int num : nums){
// if(num != 0){
// nums[insertPos++] = num;
// }
// }
// while(insertPos < nums.length){
// nums[insertPos++]=0;
// }
// }
public void moveZeroes(int[] nums) {
if(nums == null || nums.length == 0){
return;
}
int j=0;
for(int i=0; i<nums.length; ++i){
if(nums[i] != 0){
nums[j++] = nums[i];
}
}
for(int i=j; i<nums.length; ++i){
nums[i] = 0;
}
}
}