Leetcode每日一题——“移除元素”

news2024/11/25 0:48:51

各位CSDN的uu们你们好呀,小雅兰又来啦,今天,小雅兰的内容是移除元素,下面,让我们进入Leetcode的世界吧


 

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。

示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

 


方法一:暴力求解

 

遍历整个数组,在此测试用例中,val=2,那么每次找到2的时候,就把后面的元素往前覆盖 

但是这种做法不满足题目的要求,时间复杂度太高了,为O(N^2)

所以这种方法,小雅兰就不写代码来实现啦


方法二:建立数组法

 把不等于val的数就放到新建立的这个数组中,最后返回这个数组就可以啦

 这种方法固然很好,但是时间复杂度和空间复杂度都为O(N)

 我们想想:还有没有更好的方法呢?

这就来到了我们的方法三啦!!!


方法三:双指针法

 

定义两个变量,采用循环的方式,当src不等于val的时候,就让src和dst指向同一位置,并且src++,dst++,当src等于val的时候,就只有src++,最后返回dst

下面,让我们来用代码实现一下:

int removeElement(int* nums, int numsSize, int val){
 int src=0;
 int dst=0;
 while(src<numsSize)
 {
     if(nums[src]!=val)
     {
         nums[dst]=nums[src];
         dst++;
         src++;
     }
     else
     {
         src++;
     }
 }
 return dst;
}
int removeElement(int* nums, int numsSize, int val){
 int src=0;
 int dst=0;
 for(src=0;src<numsSize;src++)
 {
     if(nums[src]!=val)
     {
         nums[dst]=nums[src];     //双指针的应用
         dst++;
     }
 }
 return dst;
}

两种循环方式都是可以的


好啦,小雅兰今天的刷题内容就到这里啦,做的题目太少,还要继续加油噢!!!

 

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

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

相关文章

ChatGPT | 使用new bing的简易教程

1. 教程参考&#xff1a; https://juejin.cn/post/7199557716998078522 2.在参考上述教程遇到的问题与解决 2.1 下载dev浏览器的网址打不开 egde dev下载地址&#xff08;上面网站上的&#xff09;我电脑打不开 换用下面的网址即可 https://www.microsoftedgeinsider.com/z…

在three.js中废置对象

基于three.js子如何废置对象(How to dispose of objects) 前言: 为了提高性能,并避免应用程序中的内存泄露,一个重要的方面是废置未使用的类库实体。 每当创建一个three.js中的实例时,都会分配一定数量的内存。然而,three.js会创建在渲染中所必需的特定对象, 例如几何…

4.11、socket地址

4.11、socket地址1.通用 socket 地址2.专用socket地址1.通用 socket 地址 socket 网络编程接口中表示 socket 地址的是结构体 sockaddr&#xff0c;其定义如下&#xff1a; // socket地址其实是一个结构体&#xff0c;封装端口号和IP等信息。后面的socket相关的api中需要使用…

【c语言】每日一题之汉诺塔类型

目录 前言题目说明描述 题目分析汉诺塔问题 题目代码展示 前言 大佬们&#xff0c;我又回来了&#xff0c;最近也在忙自己的学业&#xff0c;忙着生活对线&#xff0c;也参加了今年的蓝桥杯其他的组&#xff0c;发现今年太难了 &#xff0c;摆烂了。但我想到了读者你们&#x…

前端面试之JavaScript题目,简单全面(持续更新ing...)

数据类型 1.JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; 类型&#xff1a;JavaScript共有8种数据类型&#xff0c;undefined&#xff0c;null&#xff0c;Boolean&#xff0c;string&#xff0c;number&#xff0c;bigint&#xff0c;symbol&#xff0c;obj…

K-计算面积

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小w给你三种图形&#xff0c;可能是平行四边形&#xff0c;三角形&#xff0c;梯形&#xff0c;对于给定的TTT个图形&#xff0c;你需要依次回答每个图形的面积&#xff0c;保证答案…

《LeetCode》——LeetCode刷题日记

本期&#xff0c;将给大家带来的是关于 LeetCode 的关于二叉树的题目讲解。 目录 &#xff08;一&#xff09;606. 根据二叉树创建字符串 &#x1f4a5;题意分析 &#x1f4a5;解题思路 &#xff08;二&#xff09;102. 二叉树的层序遍历 &#x1f4a5;题意分析 &#…

docker stats 命令详解

docker stats : 显示容器资源的使用情况&#xff0c;包括&#xff1a;CPU、内存、网络 I/O 等。 docker stats [OPTIONS] [CONTAINER...]OPTIONS 说明&#xff1a; –all , -a :显示所有的容器&#xff0c;包括未运行的。 –format :指定返回值的模板文件。 –no-stream :展…

( “树” 之 BFS) 637. 二叉树的层平均值 ——【Leetcode每日一题】

637. 二叉树的层平均值 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 1 0 − 5 10^{-5} 10−5 以内的答案可以被接受。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[3.00000,14.50000,1…

060202体积弧长-定积分在几何学上的应用-定积分的应用

文章目录 2 体积2.1 旋转体的体积2.2 平行截截面面积已知的立体的体积2.3 例题 3 平面曲线的弧长2.1 直接坐标系2.2 参数方程2.3 极坐标系 结语 2 体积 2.1 旋转体的体积 情形①平面图形由 y f ( x ) , y 0 , x a , x b yf(x),y0,xa,xb yf(x),y0,xa,xb所围成&#xff0c;…

LeetCode——1041. 困于环中的机器人

一、题目 在无限的平面上&#xff0c;机器人最初位于 (0, 0) 处&#xff0c;面朝北方。注意: 北方向是y轴的正方向。 南方向是y轴的负方向。 东方向是x轴的正方向。 西方向是x轴的负方向。 机器人可以接受下列三条指令之一&#xff1a; “G”&#xff1a;直走 1 个单位 “L”…

seata1.5.2+nacos2.10配置教程

seata1.5.2配置教程本文基于nacos2.1.0mysql8.0seata1.5.21.下载安装包 官网&#xff1a;http://seata.io/zh-cn/blog/download.html seata目录结构如图&#xff1a; 2.主要需要修改的配置文件是\seata\conf\application.yml,可参考示例application.example.yml server:port:…

SpringBoot项目集成JMH测试用例

SpringBoot项目集成JMH测试用例1. JMH2. JMH使用2.1 pom引用JMH2.2 BaseBenchmark3. 部分注解介绍4. Jenkins 集成 JMH4.1 下载插件配置Job1. JMH JMH&#xff08;Java Microbenchmark Harness&#xff09;是一个 Java 工具&#xff0c;用于构建、运行和分析用 Java 和其他针对…

【redis】缓存双写一致性之工程落地实现(下)

【redis】缓存双写一致性之工程落地实现&#xff08;下&#xff09; 本篇由于没有进行实操&#xff0c;所以没有记录详细的配置内容 文章目录 【redis】缓存双写一致性之工程落地实现&#xff08;下&#xff09;本篇由于没有进行实操&#xff0c;所以没有记录详细的配置内容 前…

树莓派 GPIO口控制双色LED灯

目录 一、首先加载库 二、设置编码规范 三、去除GPIO口警告 四、进行详细编程 五、程序源码 GPIO&#xff08;General Purpose I/O Ports&#xff09;意思为通用输入/输出端口&#xff0c;通过它们可以输出高低电平或者通过它们读入引脚的状态&#xff08;是高电平或是低电…

Faster RCNN系列——RPN的真值详解

RPN的真值分为类别真值和偏移量真值&#xff0c;即每一个Anchor是否对应着真实物体&#xff0c;以及每一个Anchor对应物体的真实偏移值&#xff0c;这两种真值的具体求解过程如下图所示&#xff1a; Anchor生成 Anchor生成的具体过程可参考Faster RCNN系列——Anchor生成过程&a…

C++|引用篇

目录 引用概念 引用的用法 做函数形参 优点一 优点二 引用做返回值 让我们更深入的了解引用与指针 语法层引用与指针完全不同的概念 站在底层的角度看指针与引用 引用概念 在语言层面上&#xff1a;引用不是定义新的变量&#xff0c;而是给已存在变量再取一个别名&am…

Spring——读取和存储(包含五大注解,对象装配,注入关键字)

目录 一、创建Spring项目 1. 创建一个普通的maven项目 2. 添加Spring框架支持&#xff08;spring-context&#xff0c;spring-beans&#xff09; 3. 添加启动类 二、Bean对象的读取和存储——不使用注释版 1. 创建Bean 2. 将Bean注册到容器 3. 获取并使用Bean对象 3.1…

Faster RCNN系列——Anchor生成过程

一、RPN模块概述 RPN模块的输入、输出如下&#xff1a; 输入&#xff1a;feature map&#xff08;输入图像经过特征提取网络后得到的特征图&#xff09;、物体标签&#xff08;训练集中所有物体的类别和边框信息&#xff09;输出&#xff1a;Proposal&#xff08;生成的建议框…

KD-2125地下管线故障测试仪

一、产品概述 KD-2125电缆综合探测仪&#xff08;管线仪&#xff09;可进行地下电缆线路&#xff08;停电/带电&#xff09;和金属管道等敷设路径探测、识别、埋深测量&#xff1b;以及路灯电缆、地埋线路的故障查找等&#xff0c;同时也可进行地下带电线缆排查。该设备以其优越…