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

算法题(16):原地移除元素

审题:

题目需要我们直接改变原数组的数据,达到所有的val值都被筛选出来,让剩下的非val数据随意排在数组前面,并且返回数组中非val数据的个数

思路:

方法一:双指针

我们让left负责指向正待赋值的索引处,right负责去遍历整个数组,找到非val值就赋值给left指向的位置

方法二:优化双指针

由于方法一可能存在因为开头处有val值就让数据都往前移动的情况,而这种情况如果我们直接把后面的数据给赋值到前面就可以避免这种情况。所以我们让right从后面开始遍历,直到left>=right为止

方法三:非原地解法

虽然题目让我们只能原地改变数组,但是其实他无法监视我们到底怎么实现,只可以看我们的结果,所以其实我们开个新数组,把数据处理好之后再把数据赋值给nums数组即可

解题:

方法一:双指针

方法二:优化双指针

注意:

为何当left位置的val被覆盖之后left不++?

因为不知道right-1索引位置的数据是不是val,所以我们只有确定left位置数据不是val才会++

方法三:非原地解法

k:用来记录非val的数据的个数有多少个

newnums数组只会记录非val的数据

27. 移除元素 - 力扣(LeetCode)


http://www.mrgr.cn/news/81619.html

相关文章:

  • 【自留】Unity VR入门
  • 无问社区-无问AI模型
  • 深入理解 JVM 的垃圾收集器:CMS、G1、ZGC
  • 【蓝桥杯每日一题】分糖果——DFS
  • 前端Python应用指南(二)深入Flask:理解Flask的应用结构与模块化设计
  • lv_ffmpeg学习及播放rtsp
  • 学习笔记 --C#基础其他知识点(持续更新)
  • 【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
  • jetson Orin nx + yolov8 TensorRT 加速量化 环境配置
  • 《Vue3 二》Vue 的模板语法
  • 精准识别花生豆:基于EfficientNetB0的深度学习检测与分类项目
  • IS-IS协议 配置实验
  • 音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
  • 六大基础深度神经网络之CNN
  • 【Compose multiplatform教程09】【组件】Image组件
  • 3. Kafka入门—安装与基本命令
  • Vue2:v-for创建echart图表时不能使用动态ref,要使用动态id
  • 关于studywolf_control动态运动原语
  • C#实现图像骨架化(ZhangSuen细化算法)
  • 【形式化验证latency】2.AADL项目结构及语法(一)
  • Qt学习记录
  • android13 系统文字大小和显示大小的修改
  • AI科研助手开发总结:向量与数据权限的应用(三)
  • 【Linux】编写简易shell 深度理解命令行解释器 环境变量 内建命令
  • 数据库概论
  • 将一个组件的propName属性与父组件中的variable变量进行双向绑定的vue3(组件传值)