leetcode-283-移动零

问题:

 

package com.example.demo;

public class Test283 {
    /**
     * 将数组中的0移动到数组后边,同事保持其他元素的相对位置
     * 将所有非0元素向前移动
     * 定义一个索引,该索引代表的非0元素,从0向上递增
     *
     * @param nums
     */
    public void moveZeroes(int[] nums) {
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if(nums[i] != 0){
                nums[k++] = nums[i];
            }
        }
        // 上边遍历完成之后,0-k之间的值局势所有的非0元素,所以需要将k-len之间的元素全都置0
        for (int i = k; i < nums.length; i++) {
            nums[i] = 0;
        }
    }

    public static void main(String[] args) {
        Test283 t = new Test283();
        int[] arr = {1, 0, 0, 3, 4, 5, 0, 4};
        t.moveZeroes(arr);
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}

 

posted @ 2019-08-02 23:23  xj-record  阅读(170)  评论(0编辑  收藏  举报