当前位置: 首页 > news >正文

算法打卡第二天/数组增删改查及双指针法

一,今日学习任务

第 2 天 数组增删改查及双指针法

今日任务: 27. 移除元素

题目建议: 暴力的解法,可以锻炼一下我们的代码实现能力,建议先把暴力写法写一遍。 双指针法 是本题的精髓,今日需要掌握,至于拓展题目可以先不看。

题目链接:https://leetcode.cn/problems/remove-element/
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

二,初次解题思路和思考

刚拿到这道题,第一反应就是最直白的暴力解法:
遍历数组,遇到等于目标值val的元素,就把它后面的所有元素往前挪一位,把这个值覆盖掉。
这种方法逻辑简单,写起来没难度,但时间复杂度太高了,最坏情况要把整个数组挪一遍,效率太差,肯定不是最优解。

再仔细想,题目要求原地修改数组,不能用额外空间,还得高效,那肯定就是用双指针法了。
双指针的核心就是用两个指针,一个快一个慢,一次遍历就把数组处理完,直接把时间复杂度从O(n²)降到O(n),完美符合要求。

三,写代码时核心注意点

我最容易搞混的就是两个指针的作用和移动逻辑,总结了几个关键要点:

1. 两个指针到底干嘛用?

◦ 慢指针:指向「新数组」里,下一个要放元素的位置

◦ 快指针:遍历原数组,找「不需要移除」的元素

2. 什么时候移动指针?

◦ 快指针一直往后走,遍历整个数组

◦ 只有当快指针找到不等于val的元素时,才把这个元素赋值给慢指针的位置,然后慢指针往后挪一位

◦ 如果快指针遇到了val,直接跳过,慢指针不动

3. 暴力法的坑
暴力法里,元素前移之后,当前位置要重新检查,不然会漏过连续的val,这个细节很容易写错。

四,操作

测试示例

输入:
nums = [3,2,2,3],val = 3
输出:2,新数组为[2,2]

输入:
nums = [0,1,2,2,3,0,4,2],val = 2
输出:5,新数组为[0,1,3,0,4]

五,今天收获

1. 双指针法是数组原地修改的核心技巧,能大幅优化时间复杂度,必须吃透

2. 暴力法适合练手,但面试一定要用双指针,体现算法思维

3. 数组的元素移动会改变数组长度,处理时一定要注意索引的变化,避免越界

4. 遇到「原地修改数组」「移除元素」这类问题,第一反应就该想到双指针

http://www.cnnetsun.cn/news/1898758.html

相关文章:

  • AIAgent安全合规红线预警:SITS2026强制要求的6项LLM交互审计日志规范(含审计模板下载)
  • 手把手教你用MDFEND模型实战微博假新闻检测(附Weibo21数据集下载)
  • PS制作1:1商品主图教程:用StartAI Banana修图,一键复刻参考图风格
  • 别急着编译!修复银河麒麟OpenSSH漏洞前,先搞懂ssh、sshd版本与apt仓库的“爱恨情仇”
  • Redis 网络模型
  • springboot基于微信小程序的智慧社区娱乐服务管理平台_jm78648u_zz042
  • 此数学博导等编《数学分析讲义》 有非常低级的概念性错误
  • Java NIO到底是个什么东西?
  • Haproxy服务介绍
  • Smithay Wayland 协议支持大全:从核心协议到扩展协议
  • Docker容器备份与恢复全攻略
  • Chart.js颜色理论应用:数据可视化的色彩心理学
  • LÖVR音频系统终极教程:从3D音效到空间音频的完整实现
  • 前端安全开发规范
  • 终极Ceres Solver损失函数指南:如何构建鲁棒的非线性最小二乘问题
  • 医院HIS管理系统winform源码 医院源代码 带文档 Oracle
  • craftzdog-homepage设计理念:从概念到实现的完整思考过程
  • DM V5.0.6.03.103 Windows 2000 (2026.04.13)
  • 终极PHP调试工具:php-debugbar数据格式化器详解——让变量转储、查询美化与HTML安全变得简单
  • 智能制造车间:人员+AGV无感协同定位与三维空间安全包络管控技术白皮书
  • AppUpdate完整指南:10分钟掌握Android应用更新库
  • Swin-Unet实战:基于纯Transformer的医学图像分割模型解析与应用
  • AI 英语阅读 APP的开发
  • 3D Face HRN实际案例:游戏建模师用单张照片批量生成角色面部UV贴图
  • *8发散创新:基于Python的本体推理与知识表示实战应用**在人工智能和语义网
  • 告别Qt调试器报错:一份详细的CDB配置避坑指南与原理浅析
  • 【人工智能专业】基于卷积神经网络与特征融合的农作物病害(蚜虫)目标检测算法研究
  • Openclaw 切换记忆搜索Memory search本地embedding模型
  • [FPGA]Spartan6 Uart固定波特率读写JY901P惯导模块
  • Windows Defender终极移除指南:windows-defender-remover工具完整使用教程