LeetCode移除元素

ops/2024/11/13 5:17:19/

题目描述

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和nums的大小并不重要
  • 返回 k

解题思路

通过遍历数组,将不等于 val 的元素复制到数组的前面来实现原地修改数组。最后返回的 ans 变量就是不等于 val 的元素的数量。

代码

/*** @param {number[]} nums* @param {number} val* @return {number}*/
var removeElement = function(nums, val) {let ans = 0;for(const num of nums) {if(num != val) {nums[ans] = num;ans++;}}return ans;
}; 

代码分析

  1. 初始化一个变量 ans 用来计数不等于 val 的元素。
  2. 遍历数组 nums 中的每个元素 num
  3. 如果当前元素 num 不等于 val,则将其复制到 nums 数组的 ans 索引处,并将 ans 增加 1。
  4. 遍历完成后,ans 就是数组中不等于 val 的元素的数量。
  5. 返回 ans

这个函数的时间复杂度是 O(n),其中 n 是数组 nums 的长度,因为它需要遍历整个数组一次。空间复杂度是 O(1)

nums 的其余元素和 nums 的大小并不重要,所以k 个元素后面的数据就是原来的数据, 不影响输出的正确性


http://www.ppmy.cn/ops/108511.html

相关文章

RISC-V最先进CPU微架构分析

简介 近几年热门的RISC-V架构发展迅猛,尽管因为生问题,RISC-V应用方向主要是单片机级的,高端应用方向发展发展速度缓慢,依然有不少公司推出了基于RISC-V指令集的高端应用场景的处理器。 本文汇总具有代表性的RISC-V公司推出的先…

Flutter类

Dart中的对象都继承自 Object 类,单继承(extend关键字)。Dart与Java、kotlin不同的是其无public、private、protected修饰符,默认public ,通过在属性名、方法名前加 _下划线 来定义是否私有。 实现一个简单的类 class…

了解自闭症寄宿学校的特点与教育模式

了解自闭症寄宿学校的特点与教育模式:以星贝育园为例 在为自闭症儿童寻找合适的教育与康复环境时,家长们往往面临诸多选择与挑战。自闭症寄宿学校作为一种特殊的教育形式,以其独特的特点与教育模式,为自闭症儿童提供了更加全面、…

什么是图像的边缘?说说边缘检测的任务以及基本原理?

什么是图像的边缘?说说边缘检测的任务以及基本原理? 什么是图像的边缘?边缘检测的任务边缘检测的基本原理 什么是图像的边缘? 图像的边缘是图像中亮度、颜色或纹理等特征发生急剧变化的地方,这些变化通常代表了图像中…

Playwright 测试:如何在云端使用 Browserless 运行?

什么是 Playwright? Playwright 是由微软开发的一个功能强大且用途广泛的自动化库。它使开发人员和测试人员能够轻松地跨多个浏览器自动化 Web 应用程序。 Playwright 自动化支持 Chromium、Firefox 和 WebKit,允许您跨不同浏览器进行测试。它支持 Jav…

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级&…

深度学习(七)-计算机视觉基础

计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取,图 像的压缩编码,图像的存储和传输,图像的合成,三维图像重建,图像增强,图像修复,图像的分类和识别,目…

Mysql Innodb存储引擎原理—链接如下

Mysql Innodb存储引擎| ProcessOn免费在线作图,在线流程图,在线思维导图 ProcessOn是一个在线协作绘图平台,为用户提供强大、易用的作图工具!支持在线创作流程图、思维导图、组织结构图、网络拓扑图、BPMN、UML图、UI界面原型设计、iOS界面原型设计等。同…