[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/feinibuai/JavaArithmetic/master/src/LeetCode/Leetcode283.java [Back]  [Original]

package LeetCode;

import java.util.ArrayList;
// 283. Move Zeroes
// https://leetcode.com/problems/move-zeroes/description/

public class Leetcode283 {

    // : O(n)
    // : O(n)
    public void moveZeroes(int[] nums) {

        ArrayList nonZeroElements = new ArrayList();

        // vec0nonZeroElements
        for(int i = 0 ; i < nums.length ; i ++)
            if(nums[i] != 0)
                nonZeroElements.add(nums[i]);

        // nonZeroElementsnums
        for(int i = 0 ; i < nonZeroElements.size() ; i ++)
            nums[i] = nonZeroElements.get(i);

        // nums0
        for(int i = nonZeroElements.size() ; i < nums.length ; i ++)
            nums[i] = 0;
    }
    // (in place)
    // : O(n)
    // : O(1)
    public void moveZeroes2(int[] nums) {

        int k = 0; // nums, [0...k)0

        // i,[0...i]0
        // [0...k)
        for(int i = 0 ; i < nums.length ; i ++)
            if( nums[i] != 0 )
                nums[k++] = nums[i];

        // nums0
        for(int i = k ; i < nums.length ; i ++)
            nums[i] = 0;
    }

    // (in place)
    // : O(n)
    // : O(1)
    public void moveZeroes3(int[] nums) {

        int k = 0; // nums, [0...k)0

        // i,[0...i]0
        // [0...k)
        // , [k...i]  0
        for(int i = 0 ; i < nums.length ; i ++)
            if(nums[i] != 0)
                swap(nums, k++, i);
    }

    // (in place)
    // : O(n)
    // : O(1)
    public void moveZeroes4(int[] nums) {

        int k = 0; // nums, [0...k)0

        // i,[0...i]0
        // [0...k)
        // , [k...i]  0
        for(int i = 0 ; i < nums.length ; i ++)
            if(nums[i] != 0)
                if(k != i)
                    swap(nums, k++, i);
                else
                    k ++;
    }

    private void swap(int[] nums, int i, int j){
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }

}

Web Proxy Viewer  |  New URL  |  Original Page