数组中删改元素(数据结构、顺序表、线性表)

news/2024/4/16 15:19:48/文章来源:https://blog.csdn.net/2302_80190394/article/details/136537430

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

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

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

思路:通过遍历数组判断是否为val

是:通过数组的位移,覆盖val

int removeElement(int* nums, int numsSize, int val) {

    int end = numsSize - 1;

    while(end >= 0)

    {

        if(nums[end] == val){        

            if(end == numsSize - 1)

                numsSize--;

            else{

                int start = end;

                while(start < numsSize - 1){

                    nums[start] = nums[start + 1];

                    start++;

                }

                    numsSize--;        //等所有数据都完成位移之后,再个数--。

            }

        }

        end--;

    }

    return numsSize;

}

此时时间复杂度是O(N*N)

空间复杂度是O(1)

注意点:numsSize--一定要注意封装的位置。一般封装在循环之外

2.删除数据之后,记得numsSize--、

优化:时间复杂度太大,将时间复杂度减小

优化:把一个数组当成两个数组处理

int removeElement(int* nums, int numsSize, int val) {

    int dest = 0;

    int src = 0;

    while(src < numsSize)

    {

        if(nums[src] != val)

        {

            nums[dest++] = nums[src++];     //dest和src同一位置也可以,数组解引用看的是数值

        }

        else

            src++;

    }

    return dest;

}

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

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

相关文章

实名制交友-智能匹配-仿二狗交友系统-TP6+uni-APP小程序H5公众号-源码交付-支持二开!

一、代码风格 通常不同的开发者具备不同的代码风格&#xff0c;但为了保证语音交友系统开发质量&#xff0c;在编码前需要进行代码风格的统一&#xff0c;通过制定一定的规则&#xff0c;约束开发者的行为。具有统一风格的代码才能更清晰、更完整、更容易理解、更方便后期维护…

Python数据处理实战(5)-上万行log数据提取并分类进阶版

系列文章&#xff1a; 0、基本常用功能及其操作 1&#xff0c;20G文件&#xff0c;分类&#xff0c;放入不同文件&#xff0c;每个单独处理 2&#xff0c;数据的归类并处理 3&#xff0c;txt文件指定的数据处理并可视化作图 4&#xff0c;上万行log数据提取并作图进阶版 …

邮件营销新手必读指南?怎样做好邮件营销?

邮件营销的全流程及步骤&#xff1f;做好邮件营销有哪些注意点&#xff1f; 邮件营销作为一种传统却依然高效的推广手段&#xff0c;被众多企业所青睐。对于新手来说&#xff0c;如何开展邮件营销&#xff0c;却是一个值得探讨的话题。AokSend将为你提供一份邮件营销新手必读指…

Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!

内容概要 BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力&#xff0c;通过该接口&#xff0c;开发者可以动态地注册、检索和移除Bean定义&#xff0c;使得Spring容器在应对复杂应用场景时更加游刃有余&#xff0c;增强了Spring容器的可扩展性和动态性&#xf…

Android视角看鸿蒙第三课(module.json中的各字段含义之nametype)

Android视角看鸿蒙第三课(module.json中的各字段含义) 前言 上篇文章我们试图找到鸿蒙app的程序入口&#xff0c;确定了在鸿蒙工程中,由AppScope下的app.json5负责应用程序的图标及名称,由entry->src->main-module.json5负责桌面图标及名称的展示。 AppScope下的app.js…

uniapp封装文字提示气泡框toolTip组件

uniapp封装文字提示气泡框toolTip组件 文字提示气泡框&#xff1a;toolTip 因为uniapp 中小程序中没有window对象&#xff0c;需手动调用 关闭 第一种办法关闭&#xff1a;this.$refs.tooltip.close() 第二种办法关闭&#xff1a;visible.sync false 移动端没有现成的toolTip组…

释机器学习中的召回率、精确率、准确率

准确率和召回率之间通常存在一定的折衷关系——当阈值较高时&#xff0c;分类器的准确率较高&#xff0c;但召回率较低&#xff1b; 当阈值较低时&#xff0c;分类器的召回率较高&#xff0c;但准确率较低 召回率(灵敏度)&#xff1a;对实际为正类的样本&#xff0c;模型能识别…

【机器学习300问】26、什么是SVM支持向量机?

〇、小卖部二分类的例子 地图上有两个小卖部A和B&#xff0c;地图上的点代表一个人&#xff0c;调查这些人去A或者B小卖部的可能性&#xff0c;根据可能性将人群分为A派和B派。假设我们只考虑人们距离小卖部的距离这一个特征&#xff0c;比如距离A小卖部近的人去A的概率大。 图…

总结Redis的原理

一、为什么要使用Redis 缓解数据库访问压力mysql读请求进行磁盘I/O速度慢&#xff0c;给数据库加Redis缓存&#xff08;参考CPU缓存&#xff09;&#xff0c;将数据缓存在内存中&#xff0c;省略了I/O操作 二、Redis数据管理 2.1 redis数据的删除 定时删除惰性删除内存淘汰…

医学大数据|统计基础|医学统计学(笔记):开学说明与目录

开始学习统计基础&#xff0c;参考教材&#xff1a;医学统计学第五版 点点关注一切来学习吧 责任编辑&#xff1a;医学大数据刘刘老师&#xff1a;头部医疗大数据公司医学科学部研究员 邮箱&#xff1a;897282268qq.com 久菜盒子工作室 我们是&#xff1a;985硕博/美国全奖…

Git 掌握

目录 一、前言 二、centos安装Git 三、Git基本操作 (1) 创建Git本地仓库 (2) 配置Git (3) 认识工作区&#xff0c;暂存区&#xff0c;版本库 四、添加文件 五、查看.git文件 六、修改文件 七、版本回退 八、撤销修改 (1) 场景一 对于还没有add的代码 (2) 场景二 已…

【Educoder数据挖掘实训】异常值检测-值域法

【Educoder数据挖掘实训】异常值检测-值域法 开挖&#xff01; 这个题中 l o f lof lof算法给的很抽象&#xff0c;先用比较通俗的方式说一下&#xff1a; 首要想法是找到不合群的点&#xff0c;也就是异常点。采用的方法是对局部可达密度进行判断。相较于其他普通的简单基于聚…

可以实现单个、两个、四个圆角的qml自定义控件

控件名: RadiusRectangle File: RadiusRectangle.qml import QtQuick 2.0Item {id: rootwidth: 100height: 100clip: trueproperty int itemRadius: 0property color itemColor: "red"property real itemOpacity: 1property int rightMargin: 0property int leftMar…

CubeMX使用教程(3)——GPIO

在第二章我们完成了点灯仪式&#xff0c;这次我准备尝试把按键和灯结合起来&#xff0c;做一次GPIO的综合测试 实验任务为&#xff1a;按下按键1&#xff08;B1&#xff09;&#xff0c;第1个灯&#xff08;LD1&#xff09;亮&#xff1b; 按下按键2&#xff08;B2&#xff09;…

【应用多元统计分析】--多元数据的描述和展示(R语言)

一元随机变量 我们用协方差来刻画两个变量的相关关系&#xff0c;这里指的是线性相关关系。 对于一元随机变量的可视化最简单的就是散点图&#xff0c;大致可以看出X和Y之间的相关关系。如果想更好的看X、Y之间的相关关系&#xff0c;可以画二维的散点图。 总结&#xff1a; 均…

重塑语言智能未来:掌握Transformer,驱动AI与NLP创新实战

Transformer模型 Transformer是自然语言理解(Natural Language Understanding&#xff0c;NLU)的游戏规则改变者&#xff0c;NLU 是自然语言处理(Natural Language Processing&#xff0c;NLP)的一个子集。NLU已成为全球数字经济中AI 的支柱之一。 Transformer 模型标志着AI 新…

基于AI软件平台 HEGERLS智能托盘四向车机器人物流仓储解决方案持续升级

随着各大中小型企业对仓储需求的日趋复杂&#xff0c;柔性、离散的物流子系统也不断涌现&#xff0c;各种多类型的智能移动机器人、自动化仓储装备大量陆续的应用于物流行业中&#xff0c;但仅仅依靠传统的物流技术和单点的智能化设备&#xff0c;已经无法更有效的应对这些挑战…

【数仓】Kafka消息可视化工具:Offset Explorer(原名kafka Tool)

Offset Explorer&#xff08;以前称为Kafka Tool&#xff09;是一个用于管理和使用Apache Kafka集群的GUI应用程序。 它提供了一个直观的界面&#xff0c;允许用户快速查看Kafka集群中的对象以及集群主题中存储的消息。 它包含面向开发人员和管理员的功能。 一些主要功能包括&a…

redis 性能优化二

前言 性能优化的第二篇文章&#xff0c;将重点讲一下Redis 的响应延迟&#xff0c;响应延迟如何对redis 进行优化。这个延迟不是说一个命令或者几个命令变慢了&#xff0c;延迟了几秒&#xff0c;就说Redis 变慢了。在不同的软硬件环境下&#xff0c;Redis 本身的绝对性能并不…

C++STL【priority_queue 优先级队列】

priority_queue 优先级队列 介绍 priority_queue&#xff0c;优先级队列&#xff0c;它的底层是个vector&#xff0c;在vector的基础上封装堆的算法&#xff0c;于是它摇身一变&#xff0c;成了一个存储在一块连续空间中的堆。 《什么是堆&#xff1f;》 堆是一棵完全二叉树&…