42 lines
1.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
*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即可
};
// 上面