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

02、双指针删除元素

一、快慢指针


   双指针其实原本就是一起移动的,当遇到了需要删除的元素的时候就发生的变化,此时呢,慢指针就会停下来,完成数据的覆盖,而快指针继续移动

这样做的好处就是可以将原本是O(n^2)的时间复杂度的方法,变为O(n)的时间复杂度。数组删除元素本质上是覆盖原本的元素,并不是真正的删除,而后面覆盖的元素

是不会消失的,只会保留。

源代码:


class Solution {
public:int removeElement(vector<int>& nums, int val) {int slow = 0;for (int fast = 0 ; fast < nums.size() ; fast ++ ){if (nums[fast] != val){nums[slow] = nums[fast];   slow ++;}}return slow;}
};

注意:
(1) 在进行双指针的时候,循环语句中的nums[slow] = nums[fast] 其实就是将数组中的元素更新;

   (2) 看似没有删除元素的操作,其实是在判断的时候如果发现了需要删除的元素,就是暂停slow的移动,也就是暂停了for循环;

   (3) 当不是删除的元素的时候,此时的fast(快指针)已经在slow(慢指针)前面了,然后再更新复制,便完成了删除操作;


二、暴力破解

   使用两成for循环,将元素逐个拆解, 知道全部都弄完;这样的空间复杂度是O(1),但是时间复杂度变成了O(n),所以这样的作法不太优化;

源代码:


class Solution {
public:int removeElement(vector<int>& nums, int val) {int num = nums.size();   // 此处可以不用将 nums.size() - 1; 题目中要求的是返回数组的长度;for (int i = 0 ; i < num ; i++){   // 当然这个地方也可以用 i <= num - 1 来实现,本质都是为了不让数组的下标越界;if (nums[i] == val){for (int j = i + 1 ; j < num; j ++){nums[j - 1] = nums[j];}i --;  // 为啥要减一呢 ?因为i 后面的元素都往前面移动了 num --;  // 找到了要删除的元素就 “删除” ,将元素覆盖掉}}return num;}
};

注意:
(1) 暴力破解的内层循环其实是在找到需要删除的元素的时候,将该元素的后面的所有元素往前面移动所以才是 nums[j -1] = num[j];

http://www.jsqmd.com/news/892906/

相关文章:

  • 一文啃完DNS:原理+查询+BIND部署全攻略
  • 2026年AI漫剧视频模型行业白皮书
  • 云原生技术学习日志Day01:Linux基础入门
  • 北京上门回收明清古籍老书旧书 金石拓片印谱正规渠道首选 - 品牌排行榜单
  • WarcraftHelper 终极指南:3分钟解决魔兽争霸3卡顿、宽屏、FPS限制等常见问题
  • Sora 2正式版发布首周深度逆向:Transformer时序建模新范式、世界模型耦合机制与3个尚未修复的生成漏洞(内测工程师内部备忘录)
  • Agent开发面经
  • 保姆级教程:用RDPWrap解锁Win10/11家庭版远程桌面,还能多人同时登录
  • 国内地基地梁模板头部供应商排行 实测维度客观对比 - 奔跑123
  • 基于SCCA-RMP的属性网络异常检测:融合结构与属性视图的鲁棒方法
  • Pulover‘s Macro Creator 终极指南:从零到精通的自动化脚本生成器
  • 关于 GEO 的常见误区:你需要避免的五个关键认知偏差
  • 2026年6月帝舵售后服务中心官方公告:官方服务热线公布,更新门店地址清单 - 资讯速览
  • 从卡文到爆文只需17分钟,专业作家私藏的ChatGPT创意生成工作流,限免开放48小时
  • 成都靠谱训犬寄养优选指南|锦江/武侯/成华/青羊/郫都/双流5家店铺推荐 - 资讯速览
  • 信息检索结合制品关系:提升需求追踪精度的IR_CRT方法详解
  • 深圳小程序公司推荐 助力企业数字化转型优质服务商 - 软件测评师
  • 2026最新廊坊水处理药剂品牌排行:5家头部品牌实力对比 廊坊水处理药剂品牌推荐 - 奔跑123
  • Wireshark深度流量分析实战:从协议解析到根因定位
  • 国内水泥围墙模具头部企业排行:品质与服务实测对比 - 奔跑123
  • 鸿蒙英语备考页面构建:考试选择与每日进度模块详解
  • C语言入门——C语言常见概念
  • 生活垃圾处理设备厂家选购指南:如何选到合规高效的解决方案 - 资讯速览
  • 鸿蒙英语备考页面构建:学习模块网格与单词卡片详解
  • Winograd与余数系统融合:数字滤波器性能优化新路径
  • 2026年电竞椅牌子推荐:拓际TGIF大牌风范 - 13425704091
  • 2026 品质高的土工布厂家推荐:恒全土工材料上乘品质 - 17322238651
  • WSL 里的文件上传到 Azkaban
  • 2026国产分体式电磁流量计品牌推荐TOP10:技术实力与场景适配深度评测 - 仪表品牌排行榜
  • 免费好用的论文降ai方法(附10款降ai率工具测评) - 殷念写论文