hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!
javascript">/*** 原地移除数组 nums 中所有值等于 val 的元素,并返回剩余元素的数量* @param {number[]} nums - 输入的数组* @param {number} val - 要移除的值* @return {number} - 移除元素后数组中剩余元素的数量*/
function removeElement(nums, val) {// 初始化一个指针 k,用于记录不等于 val 的元素应该存放的位置,初始值为 0let k = 0;// 遍历数组 nums 中的每个元素for (let i = 0; i < nums.length; i++) {// 如果当前元素不等于 valif (nums[i]!== val) {// 将该元素放到 nums 数组的前 k 个位置中nums[k] = nums[i];// k 指针向后移动一位,准备存放接下来不等于 val 的元素k++;}}// 返回不等于 val 的元素的数量return k;
}
代码解释:
- 指针初始化:
定义一个变量 k 并初始化为 0,它的作用是记录不等于 val 的元素在数组 nums 中应该存放的位置。
- 遍历数组:
使用 for 循环遍历数组 nums 中的每个元素,索引为 i。
对于每个元素 nums[i],检查它是否不等于 val。
如果 nums[i] 不等于 val,将 nums[i] 赋值给 nums[k],这意味着把不等于 val 的元素依次存放到数组 nums 的前 k 个位置。
每存放一个不等于 val 的元素,k 的值加 1,表示下一个不等于 val 的元素应该存放在 nums[k] 的位置。
- 返回结果:
当遍历完整个数组后,k 的值就是数组 nums 中不等于 val 的元素的数量,将其返回。
使用示例:
javascript">let nums = [3, 2, 2, 3];
let val = 3;
let k = removeElement(nums, val);
console.log("移除元素后数组中剩余元素的数量:", k);
console.log("移除元素后的数组前 k 个元素:", nums.slice(0, k));