leetcode 283. Move Zeroes
阿新 • • 發佈:2022-05-06
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; } } }