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

(LeetCode 面试经典 150 题) 27.移除元素

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

样例模拟:

代码:

C++代码:

Java代码:


题目:

题目描述:

题目链接:

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

思路:

核心思路:

双指针

思路详解:

我们先按最容易理解的思路:定义两个指针i,j,i指针指向第一个元素,j指针指向最后一个元素。我们要遍历数组中所有的元素进行换位调整,所以编译完全部元素的条件是两个指针交错(即i>j)。在while语句中,判断i指向的元素是否等于val,如果不等于那么不用调整直接跳过,即i指针后移。如果i指向的元素等于val,那么我们将i指向的元素和j指向的元素对调。此时换到i上的元素是否等于val我们不知道,所以要到下一轮再判断,但是此时换到j上的元素一定等于val,所以j指针前移。

到最后的i索引一定是最后一个不等于val元素的后一位,所以最后一个不等于val元素的索引为i-1,即一共有i个不等于val的元素。由题要返回不等于val元素的个数,所以返回i。

上述是最容易理解且详细的思路,由题我们其实只需要保证最后nums的前k个元素是不等于val的元素,nums其余元素和nums大小不重要。所以我们不需要i与j指向元素互换,只需要把j指向元素换到i就行了

样例模拟:

代码:

C++代码:

class Solution {
public:int removeElement(vector<int>& nums, int val) {int i = 0;                //i指针指向第一个元素int j = nums.size() - 1;  //j指针指向最后一个元素//int temp;while(i <= j)  //当两个指针交错时表示全部元素已经遍历完了{if(nums[i] != val){i++;  //如果i指向的元素不等于val直接跳过,i指针后移}else{//temp = nums[i];nums[i] = nums[j];  //如果i指向的元素等于val,与j指向的元素进行交换//nums[j] = temp;j--;  //那么此时j指向的一定是换过来等于val的值,j指针前移}}return i;  //由题返回不等于val的元素数量}
};

Java代码:

class Solution {public int removeElement(int[] nums, int val) {int i = 0;int j = nums.length -1;//int temp;while(i <= j){if(nums[i] != val){i++;}else{//temp = nums[i];nums[i] = nums[j];//nums[j] = temp;j--;}}return i;}
}

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

相关文章:

  • PR出书启动
  • ✨通义万相2.1深度解析:AI视频生成引擎FLF2V-14B全流程指南(命令行参数+模型架构+数据流)
  • VTK.js
  • 容声冰箱如何让荔枝在世俱杯赛场外再“长7天”
  • Elasticsearch API访问权限控制:禁用外部端点访问
  • 在Ubuntu上设置Selenium自动化测试环境:Chrome与Firefox的详细指南
  • 海拔案例分享-门店业绩管理小程序
  • 小程序 顶部栏标题栏 下拉滚动 渐显白色背景
  • Python Django全功能框架开发秘籍
  • 多模态大语言模型arxiv论文略读(133)
  • 【nvidia-H100-ib排障实战2】:服务器 InfiniBand 网络性能问题深度分析
  • 学习Linux进程冻结技术
  • 科技资讯杂志科技资讯杂志社科技资讯编辑部2025年第9期目录
  • 微算法科技(NASDAQ:MLGO)研发可信共识算法TCA,解决区块链微服务中的数据一致性与安全挑战
  • 笔试强训:Day8
  • Qt for OpenHarmony 编译鸿蒙调用的动态库
  • MCU双分区方案,如何优雅地获知当前运行分区?
  • 开发上门按摩APP应具备哪些安全保障功能?
  • 实时预警!机场机坪井室无线智能液位监测系统助力安全降本
  • 【设计模式精讲 Day 12】代理模式(Proxy Pattern)
  • WebSocket 进阶全攻略:心跳机制、断线重连、socket.io、鉴权与WSS配置
  • LeetCode热题100—— 160. 相交链表
  • 拼多多API限流机制破解:分布式IP池搭建与流量伪装方案
  • Re:从零开始的地址映射基本分页存储管理方式(考研向)
  • 京东金融API支付链路剖析:白条分期接口的安全加固方案
  • ​​FFmpeg命令全解析:三步完成视频合并、精准裁剪​​、英伟达显卡加速
  • 飞往大厂梦之算法提升-7
  • vue | vue-macros 插件升级以及配置
  • OSC靶机练习 PG ZenPhoto
  • 华为HN8145V光猫改华为蓝色公版界面,三网通用,xgpon公版光猫