All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0201_0300.s0283_move_zeroes.Solution Maven / Gradle / Ivy

There is a newer version: 1.41
Show newest version
package g0201_0300.s0283_move_zeroes;

// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Array #Two_Pointers
// #Algorithm_I_Day_3_Two_Pointers #Programming_Skills_I_Day_6_Array #Udemy_Arrays
// #Big_O_Time_O(n)_Space_O(1) #2022_07_06_Time_2_ms_(79.54%)_Space_55.7_MB_(5.98%)

/**
 * 283 - Move Zeroes\.
 *
 * Easy
 *
 * 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?
**/
public class Solution {
    public void moveZeroes(int[] nums) {
        int firstZero = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                swap(firstZero, i, nums);
                firstZero++;
            }
        }
    }

    private void swap(int index1, int index2, int[] numbers) {
        int val2 = numbers[index2];
        numbers[index2] = numbers[index1];
        numbers[index1] = val2;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy