教你算法思想解决数组中移除元素OJ题

uniapp(全端兼容) - 最新详细实现双色球开奖走势图功能组件,uni-app红球走势图/蓝球走势图,解决双色球 “蓝球连线“ 问题,双色球效果及用线连接每个号码详细教程(同样适用于彩票开奖走势图 uni-app,双色球,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,红球走势,蓝球走势,连线,uniapp(vue):js实现双色球开奖走势图带连线,vue2,vue3,uniApp双色球组件插件,uniapp如何实现双色球走势图和连线,彩票走势图,前端 Vue实现彩票走势图,详细示例,走势图,彩票项目,绘制股票走势图,前端 JS实现彩票开奖走势图 连线,Uniapp有没有双色球的页面代码,红球蓝球的走势图如何做,双色球红球和值尾走势图, 阅读详情

咱们先来看题目,题目如下
在这里插入图片描述

题目如上,例如一个数组里面存放的数据为 3 2 2 3,给你一个指定的val值(例如为3),那么经过这一移除数组的操作后,我们的新数组就会变成 2 2 …后面的元素是什么不用管,并且返回原数组除了val值后的元素个数,例如原数组中有4个元素,val为3,那么经过程序运行后,返回2,也就是 2 2里面非val值的元素个数。

这里咱们教授大家一个重要的算法思想,那就是:双指针法。

(1)定义两个指针

两个指针均指向我们数组的首元素,例如下图
在这里插入图片描述

(2)一个探路,一个在原始地段当哨兵

让src指针在前面探路,如果src指向的数组元素不是val值,那就赋值给dst指针指向的元素,如果是val就跳过去找后面的

什么意思呢?我们目的是让非val值的元素排在前面,所以数组元素中为val的排到后面去

给大家两张图,方便了解

src指针指向的是val值,所以跳过(val值就是我们想要删除的值)
在这里插入图片描述

然后把src指针指向的值(已经确定不是等于val值的了,应该如果src指向的值是val值,那我们就自动让他跳过),赋值给哨兵dst,为什么要让dst从0开始就是这样,从前往后把我们想要的值赋值给原数组里的值。
在这里插入图片描述

注意,src赋值给dst后,src和dst指针都要向后++。src++的原因:src要继续向后判断看哪个元素不等于val,然后赋值给dst指向的元素;dst++的原因:新数组需要从前向后覆盖原先的值,所以有不是val值的元素给dst后,dst都要++,以便覆盖下一个原数组的元素
在这里插入图片描述
由图可知,src指向的元素依然不是val值,所以依旧赋值给dst指向的元素,然后双指针同时++
tips:如果当时src指向的元素不是val值,那么src向后++以寻找非val的值,而dst指针无需++,因为它需要的是非val的值)在这里插入图片描述
由上图可知,src指针指向了val的值,所以src++跳过,而跳过之后,来到了数组外面,自此,遍历结束,我们的程序到这也就进行完了,而我们也需要返回2。

接下来我们,上代码,实操一下

int removeElemment(int nums,int numsSize,int val)//nums:数组名,numsSize:数组元素个数,val:要删除的值
{
    int dst = 0;
    int src = 0;
    while(src<numsSize)//src肯定先到达终点,src指向数组外面的时候,遍历结束
    {
       if(nums[src] != val)//如果src指向的值不等于val,那就赋值给dst
       {
           nums[dst] = nums[src];//完成赋值
           dst++;//赋值后dst需要加加,以方便存放下一个非val值的元素
       }
       src++;//无论src遇到的是否为val值,我们都需要对src进行++,所以我们把src++放到if循环外面,每次都会++
    }
    return dst;//返回的dst正是非val值的个数,你就说巧不巧秒
}

return dst刚好就是非val值的元素个数

本次博客到此结束,有疑问的可以咨询博主,博主免费为大家解决疑惑。

rk3568 点亮双LVDS 屏 承接文章《rk3568点亮LCD(lvds)》中仅仅只能使用亮单LVDS;经过厂商的努力,陆续发布新补丁。目前支持双lvds显示,缺憾是需要自己额外移植相关补丁。受限于通信频率和VOP编码能力,支持最大分辨仍然是1920x1080、60fps。 阅读详情

相关推荐

专题一:Labview表格控件 及 应用(三)在表格中插入一行数据

专题一:Labview表格控件 及 应用(三) 在表格中插入一行数据 最近一段时间,做试验台上位机编程,老是用到表格控件,这几天抽时间专门写一个表格控件的专题。有用到的朋友可以参考一下。 今天接着讲一下,表格控件的数据插入,和相关的操作 1.表格控件的数据插入原理: 表格控件是一个 2D 字符串数组。 在表格插入一行,就是在2D数组插入一行。 行、列插入类似** 以下以成绩录入为例说明 2.1 不要表头直接插入 知识点1:创建数组:把数学,语文,英语三个数值,连成一个一位数组(数值型)。 知

Labview十年工控_702老师的博客 1万+

DS初阶:顺序表、链表相关OJ题(1)

本文为经典算法OJ题练习,大部分题型都有多种思路,每种思路的解法博主都试过了(去网站那里验证)是正确的,大家可以参考!!

weixin_51142926的博客 1万+

Pytorch transformers tokenizer 分词器词汇表添加新的词语和embedding

NLP添加新词汇

7323

顺序表OJ(经典算法)——移除元素,合并数组

学完了顺序表,我们来看看一些和顺序表算法相关的经典OJ题目今天分享的两道题目和顺序表的经典算法双指针法紧密相连,合并数组是双指针法的变形。在我们以后学习归并排序的时候,也是要用到双指针去合并数组和排序的。有第二道题的基础有利于我们更好地理解以后面对的归并排序,而第一题为我们提供的快慢指针法在不少OJ中也有它的影子,比如移动0问题,环形链表问题等等,我们会再次遇见。

2301_80662522的博客 1876

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

告别模糊与偏色:使用RKISP Tuner为RK3588s+IMX415进行图像质量调优的实战心得

本文详细介绍了如何使用RKISP Tuner为RK3588s+IMX415进行图像质量调优的实战经验。从调试环境搭建到3A算法优化,再到画质增强模块的深度调参,提供了全面的技术指导和参数建议,帮助工程师解决噪声、色偏和细节模糊等常见问题,显著提升成像质量。

weixin_28729205的博客 455

【OJ】关于顺序表的经典题目(移除数组中指定元素的值、数组去重、合并两个有序的数组)

本文主要是讲解了以上的题目,以及总结了一下做题的方法。干货满满!!!

tianxiawushanu的博客 1446

接口操作MySQL跟MongoDB事务回滚问题

通常使用的事务注解:@Transactional 是不会对MongoDB生效的,但是在一些生产接口中无法避免同时使用MySQL跟MongoDB的操作。

weixin_45932023的博客 1579

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

本文首先会讲解什么是OJ,以及如何在刷题网站上刷OJ题。然后我们以数据结构顺序表为例,刷几道典型的OJ题,使得我们熟悉接口型OJ的实现。

qq_63992711的博客 7361

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1144

inferCNVpy实战指南:从安装到肿瘤细胞识别

本文提供inferCNVpy实战指南,详细介绍了从环境安装、数据准备到核心CNV推断分析的完整流程。重点讲解了如何利用该工具从单细胞转录组数据中识别肿瘤细胞,包括参考细胞选择、参数调优、结果可视化与解读,并分享了关键的避坑技巧,帮助用户高效完成肿瘤细胞识别。

weixin_29079643的博客 428

【 顺序表经典算法—移除元素和合并两个有序数组】

世上有两种耀眼的光芒,一种是正在升起的太阳,一种是正在努力学习编程的你!一个爱学编程的人。各位看官,我衷心的希望这篇博客能对你们有所帮助,同时也希望各位看官能对我的文章给与点评,希望我们能够携手共同促进进步,在编程的道路上越走越远!提示:以下是本篇文章正文内容,下面案例可供参考好了,本篇博客到这里就结束了,如果有更好的观点,请及时留言,我会认真观看并学习。不积硅步,无以至千里;不积小流,无以成江海。

2301_79585944的博客 411

69、SAP数据库归档重做日志备份策略与工具详解

本文详细解析了SAP数据库归档重做日志备份的重要性及策略,介绍了SAP提供的备份工具brarchive及其配置和使用方法,探讨了BRBACKUP与BRARCHIVE的联合运行、一致在线备份、备用数据库备份场景以及备份策略的综合应用与优化。此外,还分析了备份过程中常见问题的解决方法、备份监控与评估流程、与第三方备份解决方案的集成方式,以及未来备份技术的发展趋势和应对策略。通过合理运用这些策略和工具,可以有效保障SAP数据库的安全性和可恢复性。

peace的博客 135

顺序表移除元素和合并有序数组OJ题

l1,l2,l3三个指针,l1和l2指向各自数组的最后一个元素(其中,l1指向自己的最后一个有效元素),然后比较l1和l2指向元素的大小,把打的那一个放到l3指的位置上,然后l3向前移动一位,然后刚才插入的是l1,l2谁的元素,谁向前移动一位。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。

zxy13149285776的博客 1158

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

静态顺序表【数组】有关的三道OJ题

静态顺序表【数组】有关的三道OJ题

2301_80667728的博客 1113

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OJ02:数组移除元素

所谓的暴力求解法,就是直接循环遍历整个数组,如果找到了与val相同的元素,就将这个元素后面所有的元素都向前移动,这样不仅可以覆盖到与前面的val相同的元素,还可以做到。我们让arr[src]的值覆盖arr[dest],即arr[dest] = arr[src],并且让src++、dest++;当arr[src] == val时,只让src++;好的代码都是我们慢慢探索,慢慢的去优化的,加油,你我同在路上。输入:nums = [3,2,2,3], val = 3。输出:2, nums = [2,2,_,_]

吴先生的博客 764

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【经典算法OJ题讲解】

经典算法OJ题

2402_82689232的博客 1232

数据结构与算法——顺序表之手撕OJ题

暴打 ->数据结构与算法——顺序表之OJ题

yang_xinxim的博客 1245

LeetCode刷题——双指针移除数组元素

前言:本章主要介绍双指针移除数组中特定元素的解题方式。 文章目录1.原地移除数组中所有的元素val问题描述:双指针思路:绘图演示:示例程序:2.删除排序数组中的重复项问题描述:双指针思路:绘图演示:示例程序: 1.原地移除数组中所有的元素val 问题描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元

林慢慢的博客 748

顺序表、链表刷题指南(力扣OJ)

无论是面试准备还是日常编码实践,解决与顺序表和链表相关的算法问题都是不可避免的挑战,本篇文章旨在帮助你巩固和提升这两个重要数据结构的理解和应用能力。刷题不仅是为了应对面试和编码实践,更是为了培养自己的问题解决能力和学习能力。无论是顺序表还是链表,它们都是构建更复杂数据结构的基石,掌握它们对你的编程之路至关重要。

2202_75605090的博客 6835

数组OJ思路

一道题解法有很多种,了解了算法的时间复杂度和空间复杂度,我们的解题思路不仅要能解题,还要尽量做到最优。

x_p96484685433的博客 1072

[OJ]数据结构:移除元素

本文介绍了一种高效移除数组中指定元素的双指针算法。通过维护一个索引k,遍历数组时将不等于目标值的元素前移,实现原地修改。算法时间复杂度为O(n),空间复杂度为O(1),能正确处理空数组或全匹配元素的边界情况。代码示例展示了从双指针到单指针的优化过程,最终实现简洁高效的数组元素移除操作。

也菜与花的博客 5187

移除元素OJ详解

给你一个数组 和一个值 ,你需要 原地 移除所有数值等于 的元素。元素的顺序可能发生改变。然后返回 中与 不同的元素的数量。假设 中不等于 的元素数量为 ,要通过此题,您需要执行以下操作:用户评测:评测机将使用以下代码测试您的解决方案: int[] nums = [...]; // 输入数组 int val = ...; // 要移除的值 int[] expectedNums = [...]; // 长度正确的预期答案。 // 它以不等于

Yyyyyyyyyyyyds的博客 1180

数据结构与算法——链表OJ题详解(1)

暴揍数据结构——单链表OJ(第一期).Up带你抽丝剥茧。

yang_xinxim的博客 1352

数据结构-顺序表&链表经典OJ题

●。

m0_62183318的博客 1865

【LeetCode刷题日志】27.移除元素

例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。的元素,因此输出数组的长度一定小于等于输入数组的长度,我们可以把输出的数组直接写在输入数组上。与方法一不同的是,方法二避免了需要保留的元素的重复赋值操作。实现方面,我们依然使用双指针,两个指针初始时分别位于数组的首尾,向中间移动遍历该序列。的元素的位置继续被覆盖),直到左指针指向的元素的值不等于。重合的时候,左右指针遍历完数组中所有的元素。的元素,并返回移除后数组的新长度。

m0_68662723的博客 422
上一篇: 手撕顺序表2
下一篇: 小妙招带你解决轮转数组OJ题
燕山不是雪
博客等级 码龄2年 151粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值