From f69d545dada0c6b7cd8d472e2856e6fa04d360bb Mon Sep 17 00:00:00 2001 From: cp0511 Date: Tue, 8 Dec 2020 09:10:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=8B=E6=B2=9B-238-=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/cp/LeetCode_283.java | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/Week_01/cp/LeetCode_283.java b/Week_01/cp/LeetCode_283.java index 45460b4..40292be 100644 --- a/Week_01/cp/LeetCode_283.java +++ b/Week_01/cp/LeetCode_283.java @@ -1,7 +1,61 @@ package cp; /** + * * Created by 程程有小棉被啊 on 2020年12月07日. */ public class LeetCode_283 { + + + /* + 移动零 + 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 + 说明: + 1.必须在原数组上操作,不能拷贝额外的数组。 + 2.尽量减少操作次数。 + 示例: + 输入: [0,1,0,3,12] + 输出: [1,3,12,0,0] + */ + public static void main(String[] args) { + int[] num = {0,1,0,3,12}; +// moveZero(num); + moveZero2(num); + } + + static void moveZero(int[] num){ + //双指针 + int j = 0;//记录不为0的位置 + for (int i = 0; i < num.length; i++) { + if (num[i] != 0){ + num[j] = num[i];//交换位置 + if (j != i){ + num[i] = 0;//将该处置为零 + } + j++; + } + } + moveZeroPrintln(num); + } + + static void moveZero2(int[] num){ + //先将不是零的数字往前挪动,最后将最后的补零 + int j =0; + for (int i = 0; i < num.length; i++) { + if (num[i] != 0){ + num[j] = num[i]; + j++; + } + } + for (int i = j; i < num.length; i++) { + num[i] = 0; + } + moveZero(num); + } + + static void moveZeroPrintln(int[] num){ + for (int i = 0; i < num.length; i++) { + System.out.println(num[i]); + } + } } -- Gitee