常见的双指针有两种形式,⼀种是对撞指针,⼀种是快慢指针。
这里写自定义目录标题
- 题目链接 [移动0](https://leetcode.cn/problems/move-zeroes/description/)
- 问题分析
- 代码解决
题目链接 移动0
问题分析
在本题中,我们可以⽤⼀个 cur 指针来扫描整个数组,另⼀个dest 指针⽤来记录⾮零数序列的最后⼀个位置。根据 cur 在扫描的过程中,遇到的不同情况,分类处理,实现数组的划分。在 cur 遍历期间,使 [0, dest] 的元素全部都是⾮零元素, [dest + 1, cur - 1] 的元素全是零。(cur遇到非0元素就进行交换)
与快排思想类似(temp替换成0)
代码解决
class Solution {public void moveZeroes(int[] nums) {int dest = -1;for(int cur = 0;cur <= nums.length-1;cur++){//处理非0元素if(nums[cur] != 0){//dest后移dest++;//交换int temp = nums[cur];nums[cur] = nums[dest];nums[dest] = temp;}}}
}