283. Move Zeroes

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?

 1 class Solution {
 2     public void moveZeroes(int[] nums) {
 3         if (nums == null || nums.length <= 1) return;
 4         int startPointer = 0;
 5         for (int i = 0; i < nums.length; i++) {
 6             if (nums[i] != 0) {
 7                 nums[startPointer] = nums[i];
 8                 startPointer++;
 9             }
10         }
11         while (startPointer < nums.length) {
12             nums[startPointer] = 0;
13             startPointer++;
14         }
15     }
16 }

 

posted @ 2024-08-05 05:40  北叶青藤  阅读(7)  评论(0)    收藏  举报