42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
/**
|
||
*https://leetcode.cn/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150
|
||
* @param {number[]} nums
|
||
* @param {number} val
|
||
* @return {number}
|
||
*/
|
||
/**
|
||
* @param {number[]} nums
|
||
* @param {number} val
|
||
* @return {number}
|
||
*/
|
||
const removeElement = function (nums, val) {
|
||
let p1 = 0; // 记录有效元素,在这个题目中我们需要把遍历到的所有有效元素依此放入这个位置
|
||
let k = 0; // 记录有效元素的个数
|
||
for (let p2 = 0; p2 < nums.length; p2++) {
|
||
if (nums[p2] !== val) {
|
||
// [nums[p1], nums[p2]] = [nums[p2], nums[p1]]; // 语法糖执行效率低
|
||
const temp = nums[p1];
|
||
nums[p1] = nums[p2];
|
||
nums[p2] = temp;
|
||
p1++;
|
||
k++;
|
||
}
|
||
}
|
||
return k;
|
||
};
|
||
|
||
const removeElement2 = function (nums, val) {
|
||
let p1 = 0; // 记录有效元素,在这个题目中我们需要把遍历到的所有有效元素依此放入这个位置
|
||
for (let p2 = 0; p2 < nums.length; p2++) {
|
||
if (nums[p2] !== val) {
|
||
const temp = nums[p1];
|
||
nums[p1] = nums[p2];
|
||
nums[p2] = temp;
|
||
p1++;
|
||
}
|
||
}
|
||
return p1; // p1记录的是有效元素的位置,通过上面的循环可以发现p1和k的行为一致,所以不需要k来记录,只需返回p1即可
|
||
};
|
||
|
||
// 上面
|