美文网首页
LeetCode283 移动零

LeetCode283 移动零

作者: No_七 | 来源:发表于2020-04-30 17:07 被阅读0次

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;
    }

}

相关文章

  • LeetCode283 移动零

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

  • LeetCode热门100题算法和思路(day8)

    LeetCode283 移动零 题目详情 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保...

  • 2018-05-20

    [LeetCode283]移动零 第一次尝试 失败案例: 由于没有考虑到连续0的情况,导致没有考虑到移动一次后可能...

  • LeetCode283 -- iOS使用OC写算法之移动0

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

  • 【移动零】

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

  • 移动零

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

  • 移动零

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

  • 移动零

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

  • 移动零

    题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例:输...

  • 移动零

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perf...

网友评论

      本文标题:LeetCode283 移动零

      本文链接:https://www.haomeiwen.com/subject/pqltghtx.html