关键是怎么组织左右两边的指针,一点心得就是 双循环,一般情况下可以转化为双指针,另外一些需要额外的容器来协助的,也可以试着转化为双指针
/**
*
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
if(nums.length===0){
return 0
}
const swap = function(nums, i, j){
const temp = nums[i]
nums[i] = nums[j]
nums[j] = nums[i]
}
let right = nums.length - 1
for(let i = 0; i < nums.length; i++){
if(i <= right && nums[i] === val) {
swap(nums, i--, right--)
}
}
return right + 1
};