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

算法——移除元素(leetcode27)

对于移除元素这道题来讲,我首先想到的还是双指针,根据题目要求我们需要在给定的一组数组中找出与目标值不同的元素数量并且将与目标值不同的元素全部移至数组左边右边则不需关注数组元素的大小,我们利用两个指针一个指向数组首部位置(左指针)一个指向末端位置(右指针),如果首部位置所指元素与目标值相同则将右指针所指元素对左指针所指元素进行覆盖接着右指针向左移动如果不同则左指针向右移动重复上述步骤即可直至左指针越过右指针循环结束我们直接返回左指针下标即可(即为与目标值不同的元素数量总和)

这种方法比较正式的称呼是相向双指针法

class Solution {public int removeElement(int[] nums, int val) {int left=0;int right=nums.length-1;int sum=0;while(left<=right){if(nums[left]==val){nums[left]=nums[right];right--;} else{sum++;left++;}  }return sum;}
}

除此之外还有快慢指针法可以解决这个问题

快慢指针法

通过快指针来寻找与目标值不同的元素

通过慢指针来更新数组即可

class Solution {public int removeElement(int[] nums, int val) {int fastIndex=0;int slowIndex=0;while(fastIndex<=nums.length-1){if(nums[fastIndex]==val){fastIndex++;}else{nums[slowIndex]=nums[fastIndex];slowIndex++;fastIndex++;}}return slowIndex;
}
}

http://www.lryc.cn/news/482453.html

相关文章:

  • 『OpenCV-Python』安装以及图像的读取、显示、保存
  • python开发桌面应用(跨平台) 全流程
  • el-table-column prop值根据数组获取
  • MySQL_聚合函数分组查询
  • PPT 制作神器!Markdown 轻松变幻灯片!
  • 一七八、Node.js PM2使用介绍
  • 基于CSU18M92芯片的蓝牙体重秤方案
  • 深度学习经典模型之VGGNet
  • Axure网络短剧APP端原型图,竖屏微剧视频模版40页
  • ES + SkyWalking + Spring Boot:日志分析与服务监控(三)
  • php 如何将数组转成对象数组
  • HTB:Photobomb[WriteUP]
  • 图文组合-pytorch实现
  • CentOS AppStream 8 手动更新 yum源
  • 虚拟化环境中香港服务器内存如何分配与管理?
  • Android源码中如何编译出fastboot.exe和adb.exe程序
  • C++ 参数传递 笔记
  • 【Linux】注释和配置文件的介绍
  • 安卓主板_基于联发科MTK MT8788平台平板电脑方案_安卓核心板开发板定制
  • CLIP(Contrastive Language-Image Pre-Training)在SOPHON BM1684X上进行推理
  • Ascend Extension for PyTorch的源码解析
  • 鸿蒙HarmonyOS开发:给应用添加基础类型通知和进度条类型通知(API 12)
  • 从零开始使用YOLOv11——Yolo检测detect数据集自建格式转换为模型训练格式:20w+图片1w+类别代码测试成功
  • 自动化新时代:机器取代工作,我们该如何重塑自我?
  • GEE 土地分类——利用Sentinel-2数据进行土地分类
  • 《C++ 游戏开发》
  • 2024年11月10日系统架构设计师考试题目回顾
  • 测试实项中的偶必现难测bug--苹果支付丢单问题
  • Elasticsearch的数据类型
  • SSL 证书申请以及配置流程