抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。


思路

  • 使用左右双指针,两个指针初始时分别位于数组的首尾,向中间移动遍历该序列

update: 快慢指针

  • 通过一个快指针和慢指针在一个 for 循环下完成两个 for 循环的工作
    • 快指针:寻找新数组的元素,新数组就是不含有目标元素的数组
    • 慢指针:指向更新 新数组下标的位置

学习点

  • 右指针 right 初始为 nums.size() - 1,但此时 right 并没有被遍历(被处理),因此完全遍历 nums 数组的条件为 left <= right,此时 left 指针会处理 right
  • 可能会存在 nums[right] == val,因此在赋值前找到合适的 right 位置,减少赋值操作

update: 快慢指针

  • slow 指针用于写入,fast 指针用于查找
  • val == fast,慢指针不动,快指针前进;当 val != fast,快慢指针同时前进

代码

update: 快慢指针




本站采用 Volantis 主题设计