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

移除元素问题解决方法------LeetCode-OJ题

scdn!!!
问题:

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

要求:

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

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

OJ代码:

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

解析:

src,des,是数组的两个下标。通过这两个下标的移动来给数组赋值。

src与des一开始都是指向数组的第一个元素的

假设输入的val是 2

while(src<numsSize) 成立,进入循环

nums[src] ! = val 所以if 条件成立。执行语句 nums[des++] = nums[src++];

也就是把nums[src] 的值赋值给 nums[des];

再进行加一操作。

它会判断现在的src 是否满足循环的条件,如果小于numsSize 则继续进行,

如果不满足条件,就会退出循环。

由于nums[src]不等于val ,所以两个下标都进行加一操作

现在,nums[src] = = val; 进行else 语句

++src; 就是 src 下标进行加一操作,不进行赋值操作。

因为我们的目的就是移除 val 元素,保持des下标不变,最后要返回数组。

src 加一操作后的状态
src加一后 nums[src] 就又不等于 val 了,所以继续执行if 语句。

nums[src] 的值赋值给 nums[des];

所以现在 nums[src]的值就是 3

两个下标再进行加一操作。

它会判断现在的src 是否满足循环的条件,如果小于numsSize 则继续进行,

如果不满足条件,就会退出循环。

进行加一操作后的状态
现在 nums[src] 又等于 val; 所以进行else 语句。

src 下标进行加一操作,不进行赋值操作。

src加一
加一之后,nums[src] 又还等于 val; 所以还是进行else 语句。

src加一
此时, nums[src] 就不等于 val 了,所以执行if 语句。

nums[src] 的值赋值给 nums[des];

所以nums[des] 的值就是 4 了。

两个下标再进行加一操作。

进行·加一后操作的状态
nums[src] 又不等于 val 了,所以继续执行if 语句。

nums[src] 的值赋值给 nums[des];

所以现在 nums[src]的值就是 3

此时两个下标再进行加一操作

但是,scr的值会超过numsSize,所以会跳出循环。

然后 return des; 所以现在的数组就是移除val 值后的数组了。

相关文章:

移除元素问题解决方法------LeetCode-OJ题

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

JavaScript学习笔记(1.0)

push() 语法&#xff1a;数组.push(数据) 作用&#xff1a;将数据追加到数组的末尾 返回值&#xff1a;追加数据后数组最新的长度 pop() 语法&#xff1a;数组.pop() 作用&#xff1a;删除数组最后一个数据 返回值&#xff1a;被删除的数据 unshift() 语法&#xff1a;数…...

FCN网络介绍

目录前言一.FCN网络二.网络创新点前言 在图像分割领域&#xff0c;有很多经典的网络&#xff0c;如MASK R-CNN&#xff0c;U-Net&#xff0c;SegNet&#xff0c;DeepLab等网络都是以FCN为基础进行设计的。我们这里简单介绍一下这个网络。 一.FCN网络 FCN网络介绍   FCN 即全…...

Idea+maven+spring-cloud项目搭建系列--11 整合dubbo

前言&#xff1a; 微服务之间通信框架dubbo&#xff0c;使用netty &#xff08;NIO 模型&#xff09;完成RPC 接口调用&#xff1b; 1 dubbo 介绍&#xff1a; Apache Dubbo 是一款 RPC 服务开发框架&#xff0c;用于解决微服务架构下的服务治理与通信问题&#xff0c;官方提…...

2023年上半年北京杭州/广州深圳软考中/高级报名入口

软考是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资格考试。 系统集成…...

jupyter notebook配置和使用

简介 Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 参考博客&#xff1a;https://zhuanlan.zhihu.com/p/33105153 特点 ①编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器…...

【C++】通过stack、queue、deque理解适配器模式

破镜不能重圆&#xff0c;枯木可以逢春。 文章目录一、stack1.stack的介绍2.stack相关OJ题&#xff08;巧妙利用stack数据结构的特征&#xff09;3.stack的模拟实现二、queue1.queue的介绍2.queue的相关OJ题&#xff08;巧妙利用queue数据结构的特征&#xff09;3.queue的模拟实…...

JavaScript 高级实例集合

文章目录JavaScript 高级实例集合创建一个欢迎 cookie简单的计时另一个简单的计时在一个无穷循环中的计时事件带有停止按钮的无穷循环中的计时事件使用计时事件制作的钟表创建对象的实例创建用于对象的模板JavaScript 高级实例集合 创建一个欢迎 cookie 源码 <!DOCTYPE ht…...

Flutter(五)容器类组件

布局类组件包含多个子组件&#xff0c;而容器类组件只包含一个子组件 目录填充&#xff08;Padding&#xff09;装饰容器&#xff08;DecoratedBox&#xff09;变换&#xff08;Transform&#xff09;Transform.translate 平移Transform.rotate 旋转Transform.scale 缩放Rotate…...

实现满屏品字布局

html, body {width: 100%;height: 100%;}.first {width: 50%;height: 50%;margin: auto;background-color: pink;}.second {width: 50%;height: 50%;float: left;background-color: greenyellow;}.third {width: 50%;height: 50%;float: left;background-color: yellow;}...

软件测试-性能测试-基础知识

文章目录 1.性能测试理论1.1 相关概念1.2 性能测试指标2.性能测试策略2.1 基准测试2.2 负载测试2.3 稳定性测试2.4 其他测试策略3.性能测试的流程3.1 需求分析3.2 编写性能测试计划和方案3.3 编写性能测试用例3.4 性能测试执行3.5 性能测试报告4.性能测试工具4.1 Loadrunner4.2…...

java多线程与线程池-02线程池与锁

线程池与锁 第4章 线程池入门 4.1 ThreadPoolExecutor ThreadPoolExecutor是应用最广的底层线程池类,它实现了Executor和ExecutorService接口。 4.1.1 创建线程池 下面创建一个线程池,通过调整线程池构造函数的参数来了解线程池的运行特性。把核心线程数设置为3,最大…...

AB测试——流程介绍(设计实验)

前言&#xff1a; 作为AB测试的学习记录&#xff0c;接上文内容&#xff0c; 本文继续介绍假设建立和实验设计部分&#xff0c;包括实验对象、样本量计算&#xff08;显著性水平、统计功效及最小可检测效应&#xff09;、实验周期。 相关文章&#xff1a; AB测试——原理介绍 A…...

C++中的智能指针有哪些?分别解决的问题以及区别?

1.C中的智能指针有4种&#xff0c;分别为&#xff1a;shared_ptr、unique_ptr、weak_ptr、auto_ptr&#xff0c;其中auto_ptr被C11弃用。 2.使用智能指针的原因 申请的空间&#xff08;即new出来的空间&#xff09;&#xff0c;在使用结束时&#xff0c;需要delete掉&#xff0…...

通达信捉妖改良CCI指标公式,简洁巧妙

高端的食材&#xff0c;往往只需要简单的烹饪方式。好的指标也是一样&#xff0c;只需要简单处理&#xff0c;就可以实现不错的效果。捉妖改良CCI指标公式属于意外之喜&#xff0c;编写指标时写错了&#xff0c;研究后发现结果比原想法更好。 捉妖改良CCI指标公式利用了CCI&am…...

「Python 基础」面向对象编程

文章目录1. 面向对象编程类和实例访问限制继承和多态type()isinstance()dir()实例属性和类属性2. 面向对象高级编程\_\_slots\_\_property多重继承定制类枚举类元类1. 面向对象编程 Object Oriented Programming 简称 OOP&#xff0c;一种程序设计思想&#xff0c;以对象为程…...

【K3s】第23篇 一篇文章带你学习k3s私有镜像仓库配置

目录 1、私有镜像仓库配置 2、registries.yaml Mirrors Configs 1、私有镜像仓库配置 可以配置 Containerd 连接到私有镜像仓库,并使用它们在节点上拉取私有镜像。 启动时,K3s 会检查/etc/rancher/k3s/中是否存在registries.yaml文件,并指示 containerd 使...

Redis学习【12】之Redis 缓存

文章目录前言一 Jedis 简介二 使用 Jedis2.1 测试代码2.2 使用 JedisPool2.3 使用 JedisPooled2.4 连接 Sentinel 高可用集群2.5 连接分布式系统2.6 操作事务三 Spring Boot整合Redis3.1 创建工程3.2 定义 pom 文件3.3 完整代码3.4 总结四 高并发问题4.1 缓存穿透4.2 缓存击穿4…...

Bootargs 参数

bootargs 的参数有很多&#xff0c;而且随着 kernel 的发展会出现一些新的参数&#xff0c;使得设置会更加灵活多样1。除了我之前介绍的 root、console、earlyprintk 和 loglevel 之外&#xff0c;还有以下一些常用的参数&#xff1a;init: 用来指定内核启动后执行的第一个程序…...

Mybatis框架源码笔记(七)之Mybatis中类型转换模块(TypeHandler)解析

1、JDBC的基本操作回顾 这里使用伪代码概括一下流程: 对应数据库版本的驱动包自行下载加载驱动类 (Class.forName("com.mysql.cj.jdbc.Driver"))创建Connection连接: conn DriverManager.getConnection("jdbc:mysql://数据库IP:port/数据库名称?useUnico…...

截稿!NeurIPS 2026 投稿微信群成立

点击下方卡片&#xff0c;关注“CVer”公众号AI/CV重磅干货&#xff0c;第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信&#xff1a;CVer2233&#xff0c;助手会拉你进群&#xff01;扫描下方二维码&#xff0c;加入CVer学术星球&#xff01;可获得最新顶会/顶刊上…...

InvestorFinder 技术架构深度解析:VC 合伙人真实投资行为数据挖掘与精准匹配底层实现

摘要在一级市场股权投资领域&#xff0c;创业者与风险投资机构合伙人的精准匹配长期存在信息壁垒、数据碎片化、背景信息不对称三大核心痛点。传统投融资对接模式依赖 FA 机构人脉、线下路演、投融资社群人工对接&#xff0c;存在效率低下、匹配维度单一、投资人真实投资行为数…...

基于ResearchClaw构建学术论文监控爬虫:配置驱动与模块化设计实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫“ResearchClaw”。这名字听起来就有点意思&#xff0c;直译过来是“研究之爪”&#xff0c;我第一眼看到这个标题&#xff0c;就感觉它应该是个能帮你从互联网上“抓取”研究资料的工具。果不其然&#x…...

开源AI工具链ClawForge:从本地模型部署到Agent开发的平民化实践

1. 项目概述&#xff1a;从“ClawForge”看开源AI工具链的平民化实践 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ClawForge”。光看名字&#xff0c;你可能会联想到“锻造爪子”&#xff0c;有点神秘又带点力量感。实际上&#xff0c;这是一个围绕开源大语言模型&a…...

别再用filter了!MATLAB bandpass函数一键搞定信号滤波,附音乐合成与降噪实战

别再用filter了&#xff01;MATLAB bandpass函数一键搞定信号滤波&#xff0c;附音乐合成与降噪实战 信号处理工程师的日常&#xff0c;往往伴随着无数个深夜调试滤波器的痛苦回忆。从设计滤波器系数到手动补偿群延迟&#xff0c;再到反复调整截止频率&#xff0c;传统filter和…...

CANN/ops-nn LpLoss算子

LpLoss 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atl…...

面试题:模型评价指标全解析——准确率、精确率、召回率、F1、ROC、AUC、MAE、MSE、RMSE、R² 一文讲透

把“分类指标怎么看、回归指标怎么选、ROC/AUC 怎么判断模型好坏”一次讲清楚很多人在面试里被问到“模型评价指标有哪些”时&#xff0c;第一反应往往是背一串名词&#xff1a;准确率、精确率、召回率、F1、AUC、MAE、MSE、R。看似都答到了&#xff0c;实际上却很容易被继续追…...

Sunshine游戏串流服务器完整指南:三步搭建个人游戏云

Sunshine游戏串流服务器完整指南&#xff1a;三步搭建个人游戏云 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款强大的开源自托管游戏串流服务器&#xff0c;专为M…...

QML WebEngine与ECharts联袂:打造高性能实时数据可视化桌面应用

1. 为什么选择QMLWebEngineECharts组合&#xff1f; 在开发桌面端实时数据可视化应用时&#xff0c;我们常常面临一个关键选择&#xff1a;是使用原生绘图方案还是Web技术栈&#xff1f;我经过多个工业监控项目的实战验证&#xff0c;发现QMLWebEngineECharts的组合堪称黄金搭…...

工程师的科幻电影启示录:从经典影片看系统设计、AI伦理与工程思维

1. 科幻电影与技术创新的双重奏&#xff1a;一位工程师的私人片单与行业启示早上看到一则消息&#xff0c;演员凯文麦卡锡去世了。可能年轻一代的工程师对这个名字感到陌生&#xff0c;但提到1956年的经典电影《天外魔花》&#xff08;Invasion of the Body Snatchers&#xff…...