LeetCode--27.移除元素

解题思路:

        1.获取信息:

                给定一个数组和一个值,删除数组中等于这个值的值

                要求是,返回数组中不等于这个值的数的数目

                并且要求在数组上删除,不能使用额外辅助空间

                还是给了评测标准(你可以根据它的原理来实现越狱,但不建议,还是老老实实地才能磨练自己哦)我们知道,它是根据你返回的数组中不等于那个值的数的数目来进行查验进行删除后的数组的前几个元素是否与正确答案一致来进行判别的

                所以,数组的大小和除数组前几个元素外的其他元素并不重要

        2.分析题目:

                26题是删除数组中重复的项,与这道题类似,那我们可以尝试使用一下双指针法

                我下面不止有一种方法,各个方法我想借着代码来帮助你理解,在这里就不过多阐述

                有时候碰见一些相似的题,也许它们所考查的方向其实大差不差,可以比对着理解哦

        3.示例查验

                示例1和示例2:数组的大小和除数组前几个元素外的其他元素并不重要

        4.尝试编写代码:

                (1)双指针法

                        思路:准备两个指针,一个放在数组的首位,一个放在数组的末尾,前面的指针查找等于val的数,后面的指针查找不等于val的数,两个指针都找到之后就交换这两个数,再将前面的指针后移一位,后面的指针前移一位,再重复上面的操作

                        当后面的指针比前面的指针靠前的时候,就退出循环,以下是完整代码

class Solution {
public:int removeElement(vector<int>& nums, int val) {int p1=0,p2=nums.size()-1;//准备两个指针while(p1<=p2){//当后面的指针小于前面的指针时if(nums[p1]!=val)p1++;//前面的指针查找等于val的数if(nums[p2]==val)p2--;//后面的指针查找不等于val的数if(p1<p2&&nums[p1]==val&&nums[p2]!=val){//如果满足括号里面的条件,就进行交换swap(nums[p1],nums[p2]);//其实也不用非得交换,直接赋值也行,毕竟余下的元素不重要p1++;p2--;}}return p2+1;//返回数组中不等于val的数的数目}
};

                (2)快慢指针法

                        思路:也是准备两个指针,两个指针的起点都在数组的首位,其中快指针向后查找不等于val的值,查找到了之后,覆盖慢指针指向的数,再将慢指针后移一位,快指针继续查找

以下是完整代码

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];}return slow;}
};

                (3)反骨法

                        思路:它说不让用辅助存储空间,你要不要用?要不要用?

                        当然可以使用,但是不建议,耍小聪明始终上不了大雅之堂哦

                        所以,看看就可以了,以下是完整代码

class Solution {
public:int removeElement(vector<int>& nums, int val) {vector<int>res;//准备辅助存储空间for(int& num:nums){//遍历数组if(num!=val)res.push_back(num);//如果某个值不等于val,就放入res中}nums.swap(res);return nums.size();}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC(二):工作机制

核心组成 GetUserMedia&#xff1a;获取本地音视频设备&#xff08;摄像头、麦克风&#xff09;数据流。RTCPeerConnection&#xff1a;实现点对点的媒体流传输和网络连接管理。RTCDataChannel&#xff1a;点对点的任意数据通道&#xff08;除音视频外传输数据&#xff09;。 …

机器学习+城市规划第十五期:时空地理加权回归(STGWR)

机器学习城市规划第十五期&#xff1a;时空地理加权回归&#xff08;STGWR&#xff09; 引言 随着城市化进程的加速&#xff0c;城市规划面临越来越多复杂的挑战。在传统的城市规划中&#xff0c;通常会考虑到地理位置的影响&#xff0c;但往往忽略了时间维度。而在现代城市的…

用虚拟机安装macos系统之后进入Boot Manager页面

安装教程&#xff1a;在VMware中安装macos系统教程 在VMware中安装macos系统时启动后进入Boot Manager界面&#xff0c;通常是由于虚拟机的固件类型设置于镜像不兼容所致。 解决办法&#xff1a;虚拟机默认使用UEFI启动模式&#xff0c;但是部分macos镜像需要切换到BIOS模式才…

基于API的Redis缓存实现

1.使用Redis API 进行业务数据缓存管理 编写一个进行业务处理的类ApiCommentService,使用Autowired注解注入Redis API中常用的RedisTemplate&#xff08;类似于Java基础API中的JdbcTemplate&#xff09;&#xff1b; 然后在数据查询、修改和删除三个方法中&#xff0c;根据业…

前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)

文章目录 1 前言2 大模型/自然语言处理2.1 FreeAL&#xff1a;在大模型时代实现无需人工的主动学习2.2 COLD&#xff1a;中文攻击性语言检测基准2.3 将词汇的对比信息融入词嵌入以实现反义词-同义词区分2.4 LogRAG&#xff1a;基于检索增强生成的半监督日志异常检测2.5 RankRAG…

PP-OCRv5 ubuntu20.04 OCR识别服务

目录 说明 使用 效果 下载 说明 PP-OCRv5 ubuntu20.04 OCR识别服务 使用 1、下载后解压 2、进入目录、运行程序 效果 1、浏览器访问 2、接口调用 下载 方式1 源码下载 方式2 通过网盘分享的文件&#xff1a;lw.PP_OCRService.tar.gz 链接: https://pan.baidu.com…

VScode打开后一直显示正在重新激活终端 问题的解决方法

一、问题 本人打开“.py”文件后&#xff0c;同时会出现以下两个问题。 1、VScode一直循环在”正在重新激活终端“ 2、日志显示intellicode报错&#xff1a; Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS I…

uniapp 实现腾讯云音视频通话功能

uniapp 深度集成腾讯云音视频通话功能实战指南 一、技术架构解析 腾讯云音视频解决方案采用IM信令控制层TRTC媒体传输层的双架构设计&#xff0c;实现核心能力解耦&#xff1a; #mermaid-svg-DKBpT4CVDkqU1IBw {font-family:"trebuchet ms",verdana,arial,sans-ser…

linux常见问题之截取文件指定行数

linux常见问题之截取文件指定行数 一、命令概述 在处理大文本文件时&#xff0c;我们打开该文件会非常不方便&#xff0c;比如服务器上的日志文件&#xff0c;于是我们常常需要提取特定的行进行分析。Linux 系统中提供了多个强大的命令行工具&#xff0c;可以帮助我们高效地完…

微前端 - Native Federation使用完整示例

这是一个极简化的 Angular 使用angular-architects/native-federation 插件的微前端示例&#xff0c;只包含一个主应用和一个远程应用。 完整示例展示 项目结构 federation-simple/ ├── host-app/ # 主应用 └── remote-app/ # 远程应用 创建远程应用 (remote…

无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型

📋 目录 引言:无服务器架构的兴起无服务器架构核心概念主流Serverless平台技术对比企业级应用场景分析成本模型深度分析私有化部署与云端服务对比决策框架构建最佳实践与建议未来发展趋势结论引言:无服务器架构的兴起 在云计算快速发展的今天,无服务器架构(Serverless)…

内网有猫和无线路由器,如何做端口映射从而实现外网访问

内网猫和无线路由器端口映射配置指南 端口映射&#xff08;Port Forwarding&#xff09;是将外网请求引导到内网特定设备和端口的技术&#xff0c;常用于远程访问、搭建服务器等场景。以下是配置方法&#xff1a; 基本原理 猫&#xff08;调制解调器&#xff09;&#xff1a…

Spring boot应用监控集成

Spring Boot应用监控集成记录 背景 XScholar文献下载应用基于Spring Boot构建&#xff0c;需要接入Prometheus监控系统。应用已部署并运行在服务器上&#xff0c;需要暴露metrics端点供Prometheus采集。 初始状态 应用信息 框架: Spring Boot 2.x部署端口: 10089服务器: L…

安宝特案例丨又一落地,Vuzix AR眼镜助力亚马逊英国仓库智能化升级!

Vuzix M400智能眼镜近日落地亚马逊&#xff08;英国&#xff09;仓库&#xff0c;通过解放双手、免提操作优化物流效率。 安宝特&VuzixAR智能眼镜解决方案为亚马逊仓库提供实时决策支持、无缝对接员工-主管-企业管理系统&#xff0c;并加速了新员工培训流程&#xff0c;优…

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…

使用QMediaPlayer开发音乐播放器

编译完成的程序下载:【免费】使用QMediaPlayer开发音乐播放器资源-CSDN文库 完整源码:使用QMediaPlayer开发音乐播放器源码资源-CSDN文库 需求分析: 1.本地音乐播放器 核心播放功能 支持常见音频格式本地播放MP3、WAV、FLAC 等 2.播放控制:播放 / 暂停 / 停止 / 上一曲…

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…

【Redis】缓存雪崩、缓存击穿、缓存穿透

目录 1、缓存雪崩【1】定义【2】原因【3】解决方案[1]差异化过期时间[2]多级缓存[3]熔断降级[4]缓存永不过期异步更新 2、缓存击穿【1】定义【2】原因【3】解决方案[1]互斥锁[2]逻辑过期[3]热点数据加载 3、缓存穿透【1】定义【2】原因【3】解决方案[1]缓存空对象[2]布隆过滤器…

【论文阅读笔记】万花筒:用于异构多智能体强化学习的可学习掩码

摘要 在多智能体强化学习&#xff08;MARL&#xff09;中&#xff0c;通常采用参数共享来提高样本效率。然而&#xff0c;全参数共享的流行方法通常会导致智能体之间的策略同质&#xff0c;这可能会限制从策略多样性中获得的性能优势。为了解决这一关键限制&#xff0c;我们提出…

vue2 , el-select 多选树结构,可重名

人家antd都支持&#xff0c;elementplus 也支持&#xff0c;vue2的没有&#xff0c;很烦。 网上其实可以搜到各种的&#xff0c;不过大部分不支持重名&#xff0c;在删除的时候可能会删错&#xff0c;比如树结构1F的1楼啊&#xff0c;2F的1楼啊这种同时勾选的情况。。 可以全…