算法-移除元素

embedded/2025/1/31 5:52:48/

hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!
在这里插入图片描述

javascript">/*** 原地移除数组 nums 中所有值等于 val 的元素,并返回剩余元素的数量* @param {number[]} nums - 输入的数组* @param {number} val - 要移除的值* @return {number} - 移除元素后数组中剩余元素的数量*/
function removeElement(nums, val) {// 初始化一个指针 k,用于记录不等于 val 的元素应该存放的位置,初始值为 0let k = 0;// 遍历数组 nums 中的每个元素for (let i = 0; i < nums.length; i++) {// 如果当前元素不等于 valif (nums[i]!== val) {// 将该元素放到 nums 数组的前 k 个位置中nums[k] = nums[i];// k 指针向后移动一位,准备存放接下来不等于 val 的元素k++;}}// 返回不等于 val 的元素的数量return k;
}

代码解释:

  • 指针初始化:

定义一个变量 k 并初始化为 0,它的作用是记录不等于 val 的元素在数组 nums 中应该存放的位置。

  • 遍历数组:

使用 for 循环遍历数组 nums 中的每个元素,索引为 i。
对于每个元素 nums[i],检查它是否不等于 val。
如果 nums[i] 不等于 val,将 nums[i] 赋值给 nums[k],这意味着把不等于 val 的元素依次存放到数组 nums 的前 k 个位置。
每存放一个不等于 val 的元素,k 的值加 1,表示下一个不等于 val 的元素应该存放在 nums[k] 的位置。

  • 返回结果:

当遍历完整个数组后,k 的值就是数组 nums 中不等于 val 的元素的数量,将其返回。

使用示例:

javascript">let nums = [3, 2, 2, 3];
let val = 3;
let k = removeElement(nums, val);
console.log("移除元素后数组中剩余元素的数量:", k);
console.log("移除元素后的数组前 k 个元素:", nums.slice(0, k));

http://www.ppmy.cn/embedded/157961.html

相关文章

Qt Ribbon使用实例

采用SARibbon创建简单的ribbon界面 实例代码如下所示&#xff1a; 1、头文件&#xff1a; #pragma once #include <SARibbonBar.h> #include "SARibbonMainWindow.h" class QTextEdit; class SAProjectDemo1 : public SARibbonMainWindow { Q_OBJECT pub…

Docker Desktop 解决从开发到部署的高效容器化工作流问题

一、基本概念 Docker Docker 是一个开源的容器化平台&#xff0c;提供了一种轻量级的方式来打包、运行和管理应用程序及其依赖项。通过 Docker&#xff0c;你可以&#xff1a; 容器化应用程序&#xff1a;将代码、依赖项和配置打包成一个独立的容器镜像。便携性&#xff1a;…

Spring MVC 综合案例

目录 一. 加法计算器 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 3. 服务器端代码 4. 运行测试 二. 用户登录 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 (1) 登录界面接口 (2) 首页接口 3. 服务器端代码 4. 运行测试 三. 留言板 1. 准备…

使用 C/C++ 调用 libcurl 调试消息

在使用 C/C 调用 libcurl 进行 HTTP 请求时&#xff0c;有时我们需要查看请求的/应答消息的内容&#xff08;包括请求头和请求体&#xff09;以方便调试。libcurl 提供了多种方法来捕获和输出这些信息&#xff0c;本文介绍具体的使用方式。 1. libcurl 调试工具简介 libcurl 是…

Python OrderedDict 实现 Least Recently used(LRU)缓存

OrderedDict 实现 Least Recently used&#xff08;LRU&#xff09;缓存 引言正文 引言 LRU 缓存是一种缓存替换策略&#xff0c;当缓存空间不足时&#xff0c;会移除最久未使用的数据以腾出空间存放新的数据。LRU 缓存的特点&#xff1a; 有限容量&#xff1a;缓存拥有固定的…

Flutter 给安卓签名时 使用 Android Studio 找不到 Generate Signed Bundle/APK 菜单问题

根据 Flutter 文档我们可以使用 Android Studio 进行签名 Flutter文档地址&#xff1a; Android | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 生成生成上传密钥和密钥库文档&#xff1a; 为应用签名 | Android Studio | Android Developers 问题出在电脑中 …

Rust 中的方法与关联函数详解

1. 方法&#xff08;Methods&#xff09;是什么&#xff1f; 在 Rust 里&#xff0c;方法和函数的定义方式很像&#xff1a; 都使用 fn 来声明。都能拥有参数和返回值。都包含一段在被调用时执行的代码逻辑。 不同点在于&#xff1a; 方法必须定义在某个具体类型&#xff08…

二叉树-堆(补充)

二叉树-堆 1.二叉树的基本特性2.堆2.1.堆的基本概念2.2.堆的实现2.2.1.基本结构2.2.2.堆的初始化2.2.3.堆的销毁2.2.4.堆的插入2.2.5.取出堆顶的数据2.2.6.堆的删除2.2.7.堆的判空2.2.8.堆的数据个数2.2.9.交换2.2.10.打印堆数据2.2.11.堆的创建2.2.12.堆排序2.2.13.完整代码 3…