diff --git a/双指针/1. 移动零.md b/双指针/1. 移动零.md new file mode 100644 index 0000000..bb12865 --- /dev/null +++ b/双指针/1. 移动零.md @@ -0,0 +1,53 @@ +# 移动零 + +## 题目 + +给定一个数组 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 + + +进阶:你能尽量减少完成的操作次数吗? + +## 思路 + +- 等价题意 + - 将非零移到前面 +- 双指针 + - 快指针遍历 + - 慢指针填充 + +## 代码 + +```java +class Solution { + public void moveZeroes(int[] nums) { + int l = 0, r = 0; + for (; r < nums.length; r++) { + if (nums[r] != 0) { + int tmp = nums[r]; + nums[r] = 0; + nums[l] = tmp; + l++; + } + } + } +} +``` \ No newline at end of file