题目链接:https://leetcode.cn/problems/move-zeroes/?envType=study-plan-v2&envId=top-100-liked
双指针
同向指针,一个指向非0元素,一个指向0
class Solution {
public void moveZeroes(int[] nums) {
int n = nums.length;
//指针i指向非零元素,指针j指向0元素
for(int i = 0, j = 0; i < n; i++){
//注意这里不能直接写nums[i],因为不是boolean类型
if(nums[i] != 0){
//交换非零元素和0元素
swap(nums, i, j);
//j指针左边均为非零元素,i到j之间全为0元素
j++;
}
}
}
//交换数组两个元素的函数
public void swap(int[] nums, int a, int b){
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
还剩96题!