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

代码随想录数组章节(二)移除元素

题目:

给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

核心思想:考察双指针用法,用两个索引值不同步长的变化来做处理。

双指针执行过程示意图:

flowchart TD A[开始] --> B[i=0, slot=0] B --> C{i < nums.size()?} C -- 是 --> D{nums[i] != val?} D -- 是 --> E[nums[slot] = nums[i]\nslot++] E --> F[i++] D -- 否 --> F F --> C C -- 否 --> G[返回 slot]

简要说明:

  • i(快指针):遍历整个数组,检查每个元素。
  • slot(慢指针):指向下一个可以放置非 val 元素的位置。
  • nums[i] != val时,将nums[i]复制到nums[slot],然后slot向前移动一位。
  • nums[i] == val时,仅i前进,slot保持不变。
  • 遍历结束后,slot即为新数组的长度,且nums[0..slot-1]均为非 val 元素。

针对本题:

int removeElement(vector<int>& nums, int val) { int slot = 0; // 存储变化后的数组索引 for (int i = 0; i < nums.size(); i++) { if (nums[i] != val) { nums[slot] = nums[i]; slot++; } } return slot; }
http://www.jsqmd.com/news/1217166/

相关文章:

  • 从1/2开始的编程学习生活
  • Python甩开C++几条街?这脚本语言凭啥封神,简单到让程序员尖叫
  • AM62L DDR16SS子系统寄存器深度解析与性能调优实战
  • 国内游戏APP上架全过程详解:从开发到运营的完整指南
  • AI语音助手在医疗健康中的合规应用与实践路径
  • DWR技术解析:防水纺织品的核心工艺与应用
  • 帝舵中国官方售后服务中心|官方地址及售后热线权威信息公告(2026年7月更新) - 帝舵中国官方服务中心
  • PHP反序列化漏洞分析与防御实践
  • IIC通信协议详解与STM32实战应用
  • Unity游戏本地化实战指南:从架构设计到工程化落地
  • 回到 LLM Wiki 五范式
  • Llama API下线迁移指南:从Meta官方到第三方提供商的完整方案
  • 5款真正免费AI笔记工具30天实测对比
  • 一个 GDAL 集成工具库的架构设计与实践
  • MLOps工程落地三支柱:特征仓库、模型注册与生产监控
  • 考虑构网型储能支撑能力的微电网优化调度策略(Matlab代码实现)
  • 【2027最新】基于SpringBoot+Vue的实习生管理系统管理系统源码+MyBatis+MySQL
  • 从温度计到自动驾驶:卡尔曼滤波器的日常化实战指南
  • Flask-Login实现Web用户认证与会话管理
  • jQuery Mobile与HTML5移动开发核心技术解析
  • 萧邦官方换电池价格查询|全新地址与电话权威信息公告(2026年7月最新) - 萧邦中国官方服务中心
  • 多维聚合前的数据变形四范式:标准化、派生、折叠与对齐
  • 天龙八部单机版(离线买断)内外功版本无属性石头单机启动步骤
  • STM32烧录方式详解:UART、SWD与DFU对比
  • Go语言核心特性与开发实践指南
  • RN 原生动画 Animated 用法、动画性能优化
  • Flutter开发环境搭建与配置指南
  • 2026 智能降AIGC软件深度测评:公认好用的,论文小白救急攻略
  • ASP.NET Core Identity高级定制与安全加固实战
  • 亲身探访深圳爱彼官方售后服务中心|网点地址与官方电话(2026年7月最新) - 爱彼中国官方服务中心