LeetCode 283題解

AC 通過

public class LeetCode283 {
    
    public void moveZeroes(int[] nums) {
        int k = 0; // nums[0-k] 存儲的是  前面k 個不等於 0 的數
        for(int i = 0; i < nums.length; i++){
            if(nums[i]!=0){
                if (k != i) {
                    // 0 1 2 0 當遍歷 到1 時 k 還是0 0 1 交換後是 1 0 此時 k =1
                    int tmp = nums[i];
                    nums[i] = nums[k];
                    nums[k] = tmp;
                } else {
                    k++;
                }
            }
        }
    }

    /**
     * @param i
     * @param j
     */
    private void swap(int i, int j) {
        int tmp = i;
        i = j;
        j = tmp;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        int[] nums = new int[]{0,1,0,3,12};
        new LeetCode283().moveZeroes(nums);
        for(int i = 0; i < nums.length;i++){
            System.out.print(nums[i]+" ");
        }
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章