双指针
题目 LC27 链接 leetcode.cn/problems/re…
题解
public int removeElement(int[] nums, int val) {
// 初始化两个指针,慢指针 slow 用于标记当前处理位置,快指针 quick 标记新数组位置
int slow = 0;
int quick = 0;
// 遍历数组,快指针从头到尾扫描数组
while (quick < nums.length) {
// 如果当前快指针指向的值不等于目标值 val
if (nums[quick] != val) {
// 将快指针指向的值赋值给慢指针指向的位置
nums[slow] = nums[quick];
// 慢指针前进一位
slow++;
}
// 快指针前进一位
quick++;
}
// 返回慢指针的位置,即新数组的长度
return slow;
}