LeetCode283 移动零

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。

public class LeetCode283 {

    public static void main(String[] args) {

        int[] nums = new int[]{0, 1, 0, 3, 12};
        int[] result = moveZeroes4(nums);
        for (int i = 0; i < result.length; i++) {
            System.out.print(result[i] + ",");
        }
    }

    /**
     * 思路一
     *
     * @param nums
     * @return
     */
    public static int[] moveZeroes1(int[] nums) {
        int[] tmps = new int[nums.length];
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                tmps[k] = nums[i];
                k++;
            }
        }
        for (int i = k; i < nums.length; i++) {
            tmps[i] = 0;
        }
        return tmps;
    }

    /**
     * 思路二
     *
     * @param nums
     * @return
     */
    public static int[] moveZeroes2(int[] nums) {
        for (int i = 0, j = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                int tmp = nums[i];
                nums[i] = nums[j];
                nums[j] = tmp;
                j++;
            }
        }
        return nums;
    }

    /**
     * 思路三
     *
     * @param nums
     * @return
     */
    public static int[] moveZeroes3(int[] nums) {
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                nums[k] = nums[i];
                k++;
            }
        }
        for (int i = k; i < nums.length; i++) {
            nums[i] = 0;
        }
        return nums;
    }

    /**
     * 思路四
     *
     * @param nums
     * @return
     */
    public static int[] moveZeroes4(int[] nums) {
        int k = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                if (i != k) {
                    nums[k] = nums[i];
                }
                k++;
            }
        }
        for (int i = k; i < nums.length; i++) {
            nums[i] = 0;
        }
        return nums;
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。