题目链接
题目:
分析: 上述题目, 是将数组分块, 分为前半非零, 后半零, 这种数组分块题我们首先想到双指针
思路:
- 定义两个指针, 一个cur 一个dest, cur用来遍历数组, dest 指向分界处的第一个零位置, 将数组分块
- 首先让cur = 0; dest = 0;
- cur 遍历数组, 如果cur == 0, 那么cur++, dest不动, 指向0
- 如果cur != 0, 那么交换cur下标和dest下标的位置, cur++,dest++
代码:
class Solution {
public void moveZeroes(int[] nums) {
int dest = 0;
for(int cur = 0;cur < nums.length;cur++){
if(nums[cur] !=0){
int tmp = nums[cur];
nums[cur] = nums[dest];
nums[dest] = tmp;
dest++;
}
}
}
}