【Leetcode刷题笔记】27. 移除元素

news2025/1/24 11:48:48

原题链接

Leetcode 27. 移除元素

题目

给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 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,3,0,4]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

题目分析

思路一:直接遍历数组,把等于 val 的数删除,并把后面的数往前挪动一位,最后输出新数组的长度

缺点:时间复杂度过高,而且频繁挪动大量数字的行为并不明智

思路二:使用快慢指针法。创建两个变量 src 和 dest,我们先让 src++,当 src 上的数等于 val 时,就继续 ++;当 src 上的数不等于 dest 时,我们就把 src 的数赋值给 dest 上的数,两个都 ++,直到 src 遍历完数组。此时 dest 的值就是新数组的长度,数组内等于 val 的数也已经被覆盖掉了。这样子我们就只遍历了一遍数组,时间复杂度很小,属于优解。

示意图:

代码实现

// 快慢指针法
#include <stdio.h>

int removeElement(int* nums, int numsSize, int val) {
    // 先定义两个变量
    int src = 0;
    int dest = 0;
    // src先走,而且src的长度要被数组长度限制
    while (src < numsSize) {
        // src位置所在的数等于val,就继续往前走
        if (nums[src] == val) {
            src++;
        }
        // src不等于val,就把src上的值赋给dest,两个再一起往前走
        else {
            nums[dest] = nums[src];
            dest++;
            src++;
        }
    }
    return dest;
}

int main()
{
    int arr[] = { 3,2,2,3 };
    int numsSize = sizeof(arr) / sizeof(arr[0]);
    int len = removeElement(arr, numsSize, 3);
    int i = 0;
    printf("新数组:");
    for (i = 0; i < len; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n新数组的长度:%d\n", len);
    return 0;
}

运行结果如下

 ​​​​​​​​​​​​​​                   

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

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

相关文章

js---webAPI

01 声明变量 js组成&#xff1a; DOM:操作网页内容的,开发页面内容特效和实现用户交互 BOM: DOM树&#xff1a;将 HTML 文档以树状结构直观的表现出来&#xff0c;我们称之为文档树或 DOM 树 文档树直观的体现了标签与标签之间的关系 CSS获取元素的方法 document.querySele…

stm32h750中文数据手册以及中文参考手册

stm32h750中文数据手册以及中文参考手册 &#x1f527;腾讯交互翻译&#xff1a;https://transmart.qq.com/zh-CN/file&#x1f528;PDF拆分合并工具集在线&#xff1a;https://www.ilovepdf.com/zh-cn ✨就目前来讲&#xff0c;stm32h750VB芯片价格&#xff0c;算是历史新低&a…

Mybatis-Plus常用技巧

一、官网网站&#xff1a; https://baomidou.com/pages/24112f/#%E7%89%B9%E6%80%A7 技巧和常用方法在官网使用 二、离线安装MybatisX插件-free 1、在idea官网下载插件的zip压缩包&#xff0c;上链接&#xff08;https://plugins.jetbrains.com/&#xff09; 2、在搜索框搜…

模型训练 —— AI算法初识

一、背景 AI算法中模型训练的主要目的是为了让机器学习算法从给定的标注数据中学习规律、特征和模式&#xff0c;并通过调整模型内部参数&#xff0c;使模型能够对未见过的数据进行准确预测或决策。具体来说&#xff1a; 1. **拟合数据**&#xff1a;模型通过训练来识别输入数…

Android下SF合成流程重学习之onMessageInvalidate

Android下SF合成流程重学习之onMessageInvalidate 引言 虽然看了很多关于Android Graphics图形栈的文章和博客&#xff0c;但是都没有形成自己的知识点。每次学习了&#xff0c;仅仅是学习了而已&#xff0c;没有形成自己的知识体系&#xff0c;这次趁着有时间&#xff0c;这次…

外汇天眼:8个平台被打击,有的因诈骗被处罚!

上周&#xff0c;澳大利亚证券和投资委员会&#xff08;ASIC&#xff09;取消了总部位于悉尼的Brava Capital的澳大利亚金融服务许可证&#xff08;AFSL&#xff09;&#xff0c;意大利公司和交易委员会CONSOB则将6个非法投资平台网站列入黑名单。另外&#xff0c;Reiwa-Capita…

uni-app使用uView打开弹出层后输入框聚焦时placeholder错位问题

这里就不放效果了&#xff0c;大概意思就是在使用uView的popus时&#xff0c;在底部弹出后&#xff0c;如果弹窗中的输入框会造成一瞬间的placeholder文字错位&#xff0c;这个问题的主要是因为uView安全区适配导致 uView相关文档 https://www.uviewui.com/components/safeAr…

视频如何去除水印?这三个方法赶紧收藏

在数字化内容的海洋中&#xff0c;视频已成为我们日常生活中不可或缺的一部分。然而&#xff0c;很多时候&#xff0c;我们渴望观看的优质视频内容却被水印所困扰。因此我们就需要视频去水印工具来帮助我们解决这些困扰。 一、水印云 水印云的视频去水印功能采用了先进的 AI …

自己部署一个牛逼的开发备忘录系统

目录 效果 简介 安装 使用 效果 简介 为开发人员分享快速参考备忘清单【速查表】。这是英文版 Reference 的中文版本&#xff0c;目的是为了方便自己的技术栈查阅&#xff0c;如果您提供一个清单&#xff0c;我将抽空搬运&#xff0c;立即撸起来 :)。如果您发现此处的备忘单…

数字化转型导师坚鹏:BLM政府数字化转型战略

BLM政府数字化转型战略 ——以BLM模型为核心&#xff0c;实现知行果合一 课程背景&#xff1a; 很多政府存在以下问题&#xff1a; 不知道如何系统地制定政府数字化转型战略&#xff1f; 不清楚其它政府数字化转型战略是如何制定的&#xff1f; 不知道其它政府数字化转…

分享一下,程序员为什么不喜欢关电脑?(个人观点仅供娱乐哈哈哈)

你是否曾经疑惑&#xff0c;为何身边的程序员朋友总是让电脑保持开机状态&#xff0c;仿佛与它们有着不解之缘&#xff1f;别急着给他们贴上“电脑迷”的标签&#xff0c;背后其实隐藏着许多合理的原因。今天&#xff0c;就让我们一同走进程序员的世界&#xff0c;探究他们为何…

Windows Server系列的时钟同步

文章目录 前言一、设置时钟同步二、调整同步周期总结前言 在Windows Server系列操作系统上部署网站应用有时候需要考虑服务器之间的时钟同步问题。当存在不同服务器之间的通讯访问并且要求一定的安全限定时,时钟同步的需求尤其显得比较迫切。本文将以Windows2012server为例,…

WorkPlus构建安全高效的内网通信平台,助力企业内部协作

为何选择WorkPlus作为内网通信软件的首选&#xff1f;首先&#xff0c;WorkPlus提供全面的内网通信解决方案。不论是文字聊天、语音通话还是实时视频会议&#xff0c;WorkPlus都能提供稳定、高效的通信体验&#xff0c;确保团队成员能够及时分享信息、快速沟通和协作。通过Work…

Redis篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、redis的过期策略以及内存淘汰机制二、Redis 常见性能问题和解决方案?三、为什么Redis的操作是原子性的,怎么保证原子性的?四、Redis事务前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家…

4核8G云服务器够用吗?支持多少人?

4核8G服务器支持多少人同时在线访问&#xff1f;阿腾云的4核8G服务器可以支持20个访客同时访问&#xff0c;关于4核8G服务器承载量并发数qps计算测评&#xff0c;云服务器上运行程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&…

Google Gemini 1.5:引领跨模态AIGC信息分析理解与视频内容推理的新篇章,与 Open AI 决一高下!

Gemini 1.5具有100万token的上下文理解能力&#xff0c;是目前最强&#xff01;具有跨模态理解和推理&#xff1a;能够对文本、代码、图像、音频和视频进行高度复杂的理解和推理。允许分析1小时视频、11小时音频、超过30,000行代码或超过700,000字的文本。不过谷歌这个Gemini 1…

java后端将非树型结构的机构数据转换为树形结构的机构数据示例

文章目录 前言一、非树型机构信息1.示例数据2.机构编码规则二、转换为树型机构1.转换逻辑2.具体实现2.1.将excel文件读取到程序中2.2.解析机构编码并获取所有的父级编码候选值2.3.设置所有节点的ParentCode2.4.查找机构的根节点2.5.通过ParentCode构建完整的树型结构2.6.将树形…

【算法】基础算法002之滑动窗口(一)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.长度最小的子数组…

微服务学习 | Springboot整合Dubbo+Nacos实现RPC调用

&#x1f3f7;️个人主页&#xff1a;鼠鼠我捏&#xff0c;要死了捏的主页 &#x1f3f7;️系列专栏&#xff1a;Golang全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

vue打包优化,webpack的8大配置方案

vue-cli 生成的项目通常集成Webpack &#xff0c;在打包的时候&#xff0c;需要webpack来做一些事情。这里我们希望它可以压缩代码体积&#xff0c;提高运行效率。 文章目录 &#xff08;1&#xff09;代码压缩&#xff1a;&#xff08;2&#xff09;图片压缩&#xff1a;&…