移除元素
双指针
如果不是要求原地,直接 filter
解决。
由于数组不要求顺序,可将其放置到最后。
const swap = (arr: number[], i: number, j:number): void => {
[arr[j], arr[i]] = [arr[i], arr[j]]
}
function removeElement(nums: number[], val: number): number {
let left = 0, right = nums.length
while (left < right) {
if (nums[left] === val) {
swap(nums, left, right - 1)
right--
} else {
left++
}
}
return left
}