LeetCode 283题解

实战 Java 并发编程
实战为导向,从Java 并发原理出发,并集合开发实践,全面剖析 Java 并发编程。
wangxiaoming

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]+" ");
        }
    }

}

展开阅读全文
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值