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 + " "); + } + } +}