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