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

原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)

一、题目描述

        给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

        不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

        元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

 二、思路分析

        你拿到了这样的一道题:原地移除数组中所有的元素val。在你的考场上,你知道这场考试对你来说十分重要,看到这道题你不由得震惊住了,过于简单当你看到此题时便拥有了以下思路:定义一个新数组,一一对比然后把符合的放入到新的数组中,不符合的跳过,类似代码如下:

int removeElement(int* nums, int numsSize, int val)
{int arr[] = { 0 };int src = 0;int dest = 0;while (src < numsSize){if (nums[src] == val){src++;}else{arr[dest] = arr[src];}}return arr;
}

        在你思考时已经有人交卷了,所幸时间很长,但你敲写代码时突然弹出一个提示:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地修改输入数组。

        你被吓出一声冷汗,所幸没有写那么快,你不由得重新思考,你脑海中浮现了以下画面:一对夫妇,在朝着一个共同得目标前进,一个快一点,一个慢一点,于是跑的快的先去寻找目标,找到了给慢的那一个,然后继续前进,那个慢的也离目标近一点,,但不管跑的快的找没找到,都会走到生命尽头,留下慢的一方。

        想到这你恍然大悟,原本的无厘头也有了思路,于是你敲出如下代码:

三、代码实现(双指针法)

int removeElement(int* nums, int numsSize, int val) {int slow = 0;int fast = 0;                           //一对夫妇,原本都是零起点while (fast < numsSize) {                                     //但是有一个跑得快,一个跑得慢if (nums[fast] != val) {                                //于是跑得快的那个先去寻找共同目标nums[slow] = nums[fast];    //如果找到了,就送给跑得慢的那个slow++;                    //然后跑得慢的那个也就离目标近一点}fast++;                       //但是不管是否找得到,跑得快的那方都一直奔跑到生命的尽头}return slow;                    //最终留下跑得慢的一方
}

        你顺利的完成了考试,在那个下午,那个你恍惚的下午! 

完!

相关文章:

原地移除数组中所有的元素val,要求时间复杂度为O(N),空间复杂度为O(1)

一、题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超…...

如何提升产品用户体验?4个工具+6张案例,让你快速吃透!

在数字时代的浪潮中&#xff0c;产品用户体验早已不再是简单的“好用”或“不好用”的评判标准&#xff0c;它不仅仅是功能的堆砌&#xff0c;更是情感的连接、智慧的体现。在这个竞争激烈的市场中&#xff0c;只有那些能够深入理解用户需求、精准把握用户心理的产品&#xff0…...

C++学习笔记九--模版

目录 前言 1.函数模版 1.函数模版的概念和定义 2.函数模版的实例化 2.类模版 1.类模版的概念和定义 2.类模版的实例化 3.示例代码 前言 这篇文章介绍下C中的模版&#xff0c;包括函数模版和类模版。 1.函数模版 在编程的过程中&#xff0c;编写函数都会考虑将其写成模版…...

19、差分矩阵

差分矩阵 题目描述 输入一个n行m列的整数矩阵&#xff0c;再输入q个操作&#xff0c;每个操作包含五个整数x1, y1, x2, y2, c&#xff0c;其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上c。 请你将进行完…...

wordpress外贸独立站模板

wordpress外贸独立站模板 WordPress Direct Trade 外贸网站模板&#xff0c;适合做跨境电商的外贸公司官方网站使用。 https://www.waimaoyes.com/wangzhan/22.html...

HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP3.0的区别

一、HTTP/1.0 1996年5月&#xff0c;HTTP/1.0版本发布&#xff0c;为了提高系统的效率&#xff0c;HTTP/1.0规定浏览器与服务器只保持短暂的连接&#xff0c;浏览器的每次请求都需要与服务器建立一个TCP连接&#xff0c;服务器完成请求处理后立即断开TCP连接&#xff0c;服务器…...

聚合DNS管理系统v1.0全新发布 域名解析管理系统

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析&#xff0c;目前已支持的域名平台有&#xff1a;阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&…...

LabVIEW厂房漏水检测监控系统

LabVIEW厂房漏水检测监控系统 随着信息技术和智能制造的快速发展&#xff0c;对于精密仪器和重要物品存放场所的环境监控日益重要&#xff0c;特别是防止漏水带来的潜在风险。漏水不仅可能导致珍贵资料或仪器的损坏&#xff0c;还可能引发安全事故&#xff0c;给企业和研究机构…...

(3)(3.1) 英特尔Realsense深度摄像头(二)

文章目录 前言 5 配置ArduPilot 6 地面测试&#xff1a;飞行前验证 7 飞行测试 8 实验 9 数据闪存记录 前言 本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用&#xff0c;以实现避障(obstacle avoidance)。该方法使用在…...

go interface{} 作为函数参数

在 Go 中&#xff0c;将 interface{} 作为函数参数的意义在于使函数接受任意类型的参数。这种参数类型称为空接口&#xff0c;因为它不限制参数的具体类型&#xff0c;可以接受任何类型的值。 使用空接口作为函数参数具有以下几个意义&#xff1a; 通用性&#xff1a; 空接口允…...

Django之REST Client插件

一、接口测试工具介绍 在开发前后端分离项目时,无论是开发后端,还是前端,基本都是需要测试API接口的内容,而目前我们需要开发遵循RESTFul规范的项目,也是必然的(自己不开发前端页面)。 在网上有很多这样的工具,常用的postman,但还是需要下载安装。在这我们介绍一个VSCod…...

java实现UDP数据交互

1、回显服务器 服务器端 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UDP_Server {private DatagramSocket socketnull;public UDP_Server(int port) throws SocketExcepti…...

护眼台灯怎么选看哪些指标?不踩雷护眼台灯十大排名

平常经常面对电子屏幕的上班族、学业负担重的学生族用眼时间都比较长&#xff0c;再加上不健康的用眼习惯&#xff0c;近视人数不断增多。而在这当中&#xff0c;健康的光线也十分重要&#xff0c;良好的光线能够让眼睛更加舒服&#xff0c;用眼负担也会减轻不少&#xff0c;因…...

Web API(六)之正则表达式

Web API(六)之正则表达式 正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change 事件判断是否有类正则表达式 正则表达式(Regular Expression)是一种字符串匹配的模式(规则) 使用场景: 例如验证表单:手机号表单要求用户只能输入11位的数字 (匹配)过滤…...

304. 前缀和技巧中的边界值处理

文章目录 题目问题反思 题目 题目如下&#xff0c;其实并不难&#xff0c;属于小而美的前缀和技巧中的体型。因为我之前做过这道题&#xff0c;所以重刷也马上就能写。但是对比我写的和之前看别人写的&#xff0c;明显我的代码不够简洁&#xff0c;一个核心的差异在于对DP数组…...

ios swift5 “Sign in with Apple“(使用苹果登录)怎样接入(第三方登录)集成AppleID登录

文章目录 截图1.在开发者网站的app id中添加Sign in with Apple功能2.在Xcode中添加Sign in with Apple功能3.代码&#xff1a;只有第一次登录的时候可以获取到用户名参考博客chatGPT答案 截图 1.在开发者网站的app id中添加Sign in with Apple功能 1.1 如果你新建app id,记得在…...

时间系列预测总结

转载自&#xff1a;https://mp.weixin.qq.com/s/B1eh4IcHTnEdv2y0l4MCog 拥有一种可靠的方法来预测和预测未来事件一直是人类的愿望。在数字时代&#xff0c;我们拥有丰富的信息&#xff0c;尤其是时间序列数据。 时间序列是指基于时间刻度维度&#xff08;天、月、年等&…...

NineData创始人CEO叶正盛受邀参加『数据技术嘉年华』的技术大会

4月13日&#xff0c;NineData 创始人&CEO叶正盛受邀参加第13届『数据技术嘉年华』的技术大会。将和数据领域的技术爱好者一起相聚&#xff0c;并分享《NineData在10000公里跨云数据库间实时数据复制技术原理与实践》主题内容。 分享嘉宾 叶正盛&#xff0c;NineData CEO …...

nginx访问路径映射资源目录

Nginx映射资源目录是指在Nginx配置文件中设定规则&#xff0c;使得当客户端向Nginx服务器发送请求访问某个URL时&#xff0c;Nginx能够将该URL映射到服务器本地的实际文件目录&#xff0c;从而正确地提供该目录下的静态资源&#xff08;如HTML、CSS、JavaScript、图片、视频等文…...

数据挖掘|序列模式挖掘及其算法的python实现

数据挖掘|序列模式挖掘及其算法的python实现 1. 序列模式挖掘2. 基本概念3. 序列模式挖掘实例4. 类Apriori算法&#xff08;GSP算法&#xff09;4.1 算法思想4.2 算法步骤4.3 基于Python的算法实现 1. 序列模式挖掘 序列(sequence)模式挖掘也称为序列分析。 序列模式发现&…...

3. Django 初探路由

3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…...

论文笔记:Large Language Models as Analogical Reasoners

iclr 2024 reviewer打分5558 1 intro 基于CoT prompt的大模型能够更好地解决复杂推理问题 然而传统CoT需要提供相关的例子作为指导&#xff0c;这就增加了人工标注的成本——>Zero-shot CoT避免了人工标注来引导推理 但是对于一些复杂的任务难以完成推理&#xff0c;例如c…...

第3章 数据定义语言DDL

文章目录 第3章 DDL语言&#xff1a;数据定义语言3.1 MySQL的数据类型3.2 表的创建&#xff1a;create3.3 表的删除&#xff1a;drop3.4 快速创建表3.5 快速删除表中的数据&#xff1a;truncate3.6 修改表结构&#xff1a;alter 第5章 约束5.1 非空约束&#xff1a;not null5.2…...

C#操作MySQL从入门到精通(7)——对查询数据进行简单过滤

前言 我们在查询数据库中数据的时候,有时候需要剔除一些我们不想要的数据,这时候就需要对数据进行过滤,比如学生信息中,我只需要年龄等于18的,类似这种操作,本文就是详细介绍如何对查询的数据进行初步的过滤。 1、等于操作符 本次查询student_age 等于20的数据,使用我…...

【CVE复现计划】CVE-2024-0195

CVE-2024-0195 简介&#xff1a; SpiderFlow是新一代开源爬虫平台&#xff0c;以图形化方式定义爬虫流程&#xff0c;不写代码即可完成爬虫。基于springbootlayui开发的前后端不分离,也可以进行二次开发。该系统/function/save接口存在RCE漏洞&#xff0c;攻击者可以构造恶意命…...

k8s的ca以及相关证书签发流程

k8s的ca以及相关证书签发流程 1. kube-apiserver相关证书说明2. 生成CA凭证1.1. 生成CA私钥1.2. 生成CA证书 2. 生成kube-apiserver凭证2.1. 生成kube-apiserver私钥2.2. 生成kube-apiserver证书请求2.3. 生成kube-apiserver证书 3. 疑问和思考4. 参考文档 对于网站类的应用&am…...

思迈特软件与上海德拓签署战略合作协议,携手赋能企业数字化转型

3月27日&#xff0c;广州思迈特软件有限公司&#xff08;简称“思迈特软件”&#xff09;与上海德拓信息技术有限公司&#xff08;简称“德拓信息”&#xff09;正式签约建立战略合作伙伴关系。双方将在数字化转型、数据服务、数据应用以及市场资源等多个领域展开深度合作&…...

【快捷部署】015_Minio(latest)

&#x1f4e3;【快捷部署系列】015期信息 编号选型版本操作系统部署形式部署模式复检时间015MiniolatestCentOS 7.XDocker单机2024-04-09 一、快捷部署 #!/bin/bash ################################################################################# # 作者&#xff1a;c…...

<网络安全>《72 微课堂<什么是靶场?>》

1 简介 网络安全靶场是一种模拟真实网络环境的技术或平台。 网络安全靶场基于虚拟化技术&#xff0c;能够模拟网络架构、系统设备、业务流程的运行状态及运行环境&#xff0c;用于支持网络安全相关的学习、研究、检验、竞赛和演习等活动&#xff0c;旨在提高人员及机构的网络…...

Golang | Leetcode Golang题解之第18题四数之和

题目&#xff1a; 题解&#xff1a; func fourSum(nums []int, target int) (quadruplets [][]int) {sort.Ints(nums)n : len(nums)for i : 0; i < n-3 && nums[i]nums[i1]nums[i2]nums[i3] < target; i {if i > 0 && nums[i] nums[i-1] || nums[i]…...