0%

LeetCode题解|27. 移除元素

题目链接:27. 移除元素

概述

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

思路

解法与LeetCode题解|26. 删除排序数组中的重复项类似。

使用双指针p1p2,其中p1是慢指针、p2是快指针。
如果val === nums[p2],我们就增加p2跳过这个目标值
如果val !== nums[p2],说明已经跳过了所有目标值,所以我们需要把nums[p2]的值复制到nums[p1]中,并把p1往后移动。
直到p2 === nums.length时,算法结束。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
let p1 = 0
for (let p2 = 0; p2 < nums.length; p2++) {
if (val !== nums[p2]) {
nums[p1] = nums[p2]
p1++
}
}
return p1
};

题解合集