【LeetCode】27. 消失的数字

news2024/11/28 10:57:40

题目链接:https://leetcode.cn/problems/remove-element/

📕题目要求:

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

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

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


🧠解题思路

方案一:暴力破解

依次遍历数组,在找到等于val的值的元素后,依次将后续元素进行前移覆盖。

该方案时间复杂度为:O(N^2)

空间复杂度为:O(1)

方案二:双指针

创建一个新数组,和两个指针dst(指向新数组),src(指向原数组),若nums[src]不等于val,则将nums[src]赋值给nums[dst],dst++,src++。

时间复杂度为:O(N)

空间复杂度为:O(N)

方案三:原地双指针

创建两个指针 dst,src ,其中一个指针src进行前移,若元素值不为val,将nums[dst]==nums[src],dst++,src++。若为val则src++,dst不动,最终dst就是返回的数组大小。

时间复杂度为:O(N)

空间复杂度为:O(1)


🍭代码示例

方案一代码示例如下:

int removeElement(int* nums, int numsSize, int val)
{
    int i = 0;
    int j = 0;
    while(i<numsSize)
    {
        if(nums[i]==val)
        {
            for(j=i;j<numsSize-1;j++)
            {
                nums[j]=nums[j+1];
            }
            numsSize--;
            continue;
        }
        i++;
    } 
    return numsSize;
}

 方案三代码示例如下:

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

这就是我对本题的理解,如果大家有更优的解,欢迎交流,一起进步!

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

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

相关文章

HashMap底层源码解析及红黑树分析

HashMap线程不安全&#xff0c;底层数组链表红黑树 面试重点是put方法&#xff0c;扩容 总结 put方法 HashMap的put方法&#xff0c;首先通过key去生成一个hash值&#xff0c;第一次进来是null&#xff0c;此时初始化大小为16&#xff0c;i (n - 1) & hash计算下标值&a…

PWM输入信号转换模拟量电压电流隔离变送器1Hz~10KHz转0-10V/1-5V/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

有什么牌子台灯性价比高?性价比最高的护眼台灯

由心感叹现在的孩子真不容易&#xff0c;学习压力比我们小时候大太多&#xff0c;特别是数学&#xff0c;不再是简单的计算&#xff0c;而更多的是培养学生其他思维方式&#xff0c;有时候我都觉得一年级数学题是不是超纲了。我女儿现在基本上都是晚上9点30左右上床睡觉&#x…

RK3399平台开发系列讲解(FLASH篇)MTD子系统结构

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、什么是MTD二、MTD系统结构沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux内核对Flash存储器有很好的支持。内核设计了一个MTD(Memory Technology Device,内存技术设备)结构支持F…

平安银行潘多拉指标平台建设案例

潘多拉指标平台是平安银⾏指标管理和指标应⽤的统⼀平台。该平台以业务场景为驱动&#xff0c;提供了 AIBI内容的基础能⼒&#xff0c;并结合组件化开放平台&#xff0c;提供数据分析与应⽤的⼀站式解决⽅案。内容⽅⾯&#xff0c;提供了指标、维度和标签的录⼊、发布和规范化管…

一文看懂数据分析必备计算功能—内存计算

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 接下来&#xff0c;我们准备讲一系列的奥威BI软件的内存计算在各种分析场景中的应用。在正式开讲之前&#xff0c;我先简单说一下…

什么是阻抗?影响阻抗的因素有哪些?

问 什么是阻抗&#xff1f; 答 在具有电阻、电感和电容的电路里&#xff0c;对电路中的电流所起的阻碍作用叫做阻抗。 问 什么是阻抗匹配&#xff1f; 答 阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配。阻抗匹配主要有两点作用&#xff0c;调整负载功率和…

MATLAB函数封装2:QT调用封装函数

在利用MATLAB进行封装函数之后&#xff0c;最主要的目的是对函数进行调用&#xff0c;能够对矩阵运算和其他算法的运行进行快捷处理。 在有了MATLAB函数之后封装成DLL文件之后&#xff0c;在QT中添加动态链接库&#xff0c;就可以实现函数的调用过程&#xff0c;这个过程相对简…

「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验

「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验 一、前言1.1 本次实践介绍1.2 本次实践目的 二、准备环境资源2.1 部署前需准备工作2.2 本地环境规划 三、部署Docker环境3.1 安装Docker3.2 配置Docker镜像加速3.3 开启路由转发3.4 重启Docker服务 四、检查本地Doc…

开发者如何成为更好的自己,耐心和观察是关键

个人成长需要有耐心和观察力&#xff0c;这是一个“等待并观察”的视角。个人成长是一个自我提升的过程&#xff0c;需要结合耐心和观察力。这个过程可能会面临挑战&#xff0c;需要花费很多时间和精力&#xff0c;但最终的结果是值得的。耐心和观察是个人成长过程中的两个重要…

windows搭建一个FTP服务器超详细

一.场景&#xff1a; 在开发过程中需要FTP文件上传下载功能&#xff0c;需要在本地或者服务器上搭建一个FTP服务器。 二.详细步骤&#xff1a; 1. 安装FTP服务器支持和配置IIS web服务器 打卡“启动关闭Window功能” 控制面板>程序>启动或关闭Windows功能 或者选择快…

明确自动化测试目的

明确自动化测试目的 1.提高测试人员的工作成就感和幸福感&#xff0c;减少手工测试中重复性的工作 目前&#xff0c;在大部分中小企业中&#xff0c;手工测试在日常测试工作占据的比例很大。测试人员必须跟随开发团队不断地进行选代式开发和测试。一个功能模块可能在整个测试周…

会声会影2023中文旗舰版新增功能讲解及下载更新教程

本次更新不仅带来了标题动作、标题特效、转场特效、音频标记等功能的更新&#xff0c;也增强了热门的GIF创作器、定格动画制作、多语字幕、短时长转场等功能&#xff0c;让大家能体验到更加新潮的视频制作方式。会声会影2023是一款视频编辑软件&#xff0c;由Corel开发。该软件…

【MATLAB数据处理实用案例详解(15)】——利用BP神经网络实现个人信贷信用评估

目录 一、问题描述二、BP神经网络实现个人信贷信用评估原理三、算法步骤3.1 读入数据3.2 划分训练样本与测试样本3.3 样本归一化3.4 创建BP神经网络&#xff0c;并完成训练3.5 测试 四、运行结果 一、问题描述 对个人信用的评估方法主要分为定性评估和定量评估两种&#xff0c…

Oracle中按天、周、月、季、年统计数据

简介: oracle实现按照天、周、月、季、年进行数据统计&#xff0c;在实际业务场景中如 "报表之类" 、"财务业务的往来" 等等&#xff0c;业务往往需要我们统计整年 或 整月的数据等&#xff0c;下面我们直入主题。 说明: 原始数据 一、按天查询 1、片段 …

我们为什么要叫“鲜枣课堂”?

大家好&#xff0c;我是小枣君。 再过几天&#xff0c;就是五月份了。5月19日&#xff0c;对我们来说&#xff0c;是一个重要的日子——“鲜枣课堂”品牌诞生六周年纪念日。 2017年5月19日&#xff0c;我正式确定了“鲜枣课堂”这个品牌命名&#xff0c;并开启了我的创业历程。…

ECF机制:信号处理

​​​​​​​ &#x1f4dc; 本章目录&#xff1a; 0x00 观察接收信号 0x01 阻塞和解除阻塞信号 0x02 安全的信号处理 0x03 在信号处理器中使用安全的 I/O 函数 0x04 便携式信号处理 0x05 显式信号等待 0x00 观察接收信号 假设内核从异常处理程序中返回&#xff0c;并…

多通道 JESD204B接口FMC子卡原理图: 8 通道 125MSPS16 位 AD 采集

板卡概述 FMC129 是一款 8 通道 125MHz 采样率 16 位 AD 采集 FMC子卡&#xff0c;符合 VITA57.1 规范&#xff0c;可以作为一个理想的 IO 模块耦合至 FPGA 前端&#xff0c;8 通道 AD 通过高带宽的 FMC 连接器&#xff08;HPC&#xff09;连接至 FPGA 从 而大大降低了系统信…

Mysql group by 查询报错 1055 this is incompatible with sql_mode=only_full_group_by

文章目录 一、问题二、原因三、解决办法 一、问题 mysql8 使用 group by 查询时报错&#xff1a; 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘dkia_quality_db.b.id’ which is not functionally dependent on colu…

OpenCV CascadeClassifier级联分类器 人脸检测

一、CascadeClassifier的简介 CascadeClassifier是opencv下objdetect模块中用来做目标检测的级联分类器的一个类&#xff1b;简而言之是滑动窗口机制级联分类器的方式&#xff1b;早期opencv版本仅支持haar特征的目标检测&#xff0c;分别在opencv2.2和2.4之后开始支持LBP和HO…