From 5a991ac39adb0b365655ed74dd8bdbd0b29662cd Mon Sep 17 00:00:00 2001 From: liangjinglin Date: Sun, 16 Feb 2025 17:23:44 +0800 Subject: [PATCH] =?UTF-8?q?2025-02-16=20=E7=A7=BB=E5=8A=A8=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dataANDcalc/java/leetcode/MoveZeroes.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/dataANDcalc/java/leetcode/MoveZeroes.java diff --git a/src/dataANDcalc/java/leetcode/MoveZeroes.java b/src/dataANDcalc/java/leetcode/MoveZeroes.java new file mode 100644 index 0000000..2e178b0 --- /dev/null +++ b/src/dataANDcalc/java/leetcode/MoveZeroes.java @@ -0,0 +1,60 @@ +package leetcode; + +// +//给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 +// +// 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 +// +// +// +// 示例 1: +// +// 输入: nums = [0,1,0,3,12] +// 输出: [1,3,12,0,0] +// 示例 2: +// +// 输入: nums = [0] +// 输出: [0] +// +// +// 提示: +// +// 1 <= nums.length <= 104 +// -231 <= nums[i] <= 231 - 1 +// +// +// 进阶:你能尽量减少完成的操作次数吗? + +public class MoveZeroes { + + + private void move(int[] nums){ + int left = 0; + int right = 0; + while(true) { + if(right == nums.length){ + break; + } + if(nums[left] == 0){ + if(nums[right] != 0){ + int temp = nums[left]; + nums[left] = nums[right]; + nums[right] = temp; + left ++; + } + } else { + left ++; + } + right ++; + } + } + + public static void main(String[] args) { + int[] nums = {1,0,1}; + MoveZeroes moveZeroes = new MoveZeroes(); + moveZeroes.move(nums); + for(int num : nums){ + System.out.print(num + " "); + } + } +}