当前位置: 首页 > news >正文

算法——移除元素(leetcode27)

对于移除元素这道题来讲,我首先想到的还是双指针,根据题目要求我们需要在给定的一组数组中找出与目标值不同的元素数量并且将与目标值不同的元素全部移至数组左边右边则不需关注数组元素的大小,我们利用两个指针一个指向数组首部位置(左指针)一个指向末端位置(右指针),如果首部位置所指元素与目标值相同则将右指针所指元素对左指针所指元素进行覆盖接着右指针向左移动如果不同则左指针向右移动重复上述步骤即可直至左指针越过右指针循环结束我们直接返回左指针下标即可(即为与目标值不同的元素数量总和)

这种方法比较正式的称呼是相向双指针法

class Solution {public int removeElement(int[] nums, int val) {int left=0;int right=nums.length-1;int sum=0;while(left<=right){if(nums[left]==val){nums[left]=nums[right];right--;} else{sum++;left++;}  }return sum;}
}

除此之外还有快慢指针法可以解决这个问题

快慢指针法

通过快指针来寻找与目标值不同的元素

通过慢指针来更新数组即可

class Solution {public int removeElement(int[] nums, int val) {int fastIndex=0;int slowIndex=0;while(fastIndex<=nums.length-1){if(nums[fastIndex]==val){fastIndex++;}else{nums[slowIndex]=nums[fastIndex];slowIndex++;fastIndex++;}}return slowIndex;
}
}

相关文章:

算法——移除元素(leetcode27)

对于移除元素这道题来讲,我首先想到的还是双指针&#xff0c;根据题目要求我们需要在给定的一组数组中找出与目标值不同的元素数量并且将与目标值不同的元素全部移至数组左边右边则不需关注数组元素的大小&#xff0c;我们利用两个指针一个指向数组首部位置&#xff08;左指针&…...

『OpenCV-Python』安装以及图像的读取、显示、保存

点赞 + 关注 + 收藏 = 学会了 OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、机器学习和实时计算机视觉应用。比如图像和视频的滤镜和降噪、物体检测、人脸识别、证件号识别、车牌识别等应用。当然,也有其他工具可以对这些领域做支持,但本专栏是介绍 OpenCV 的,所…...

python开发桌面应用(跨平台) 全流程

前言 之前开发一些软件,亚马逊商品分析相关软件,但是基本上是通过程序猿控制台命令启动,同时在启动之前,还要进行程序依赖包,这对于非开发人员而言,简直是一种灾难, 为了让软件对于小白更加易用, 打算将其封装成应用程序(跨平台), 下面带大家一起完成python开发桌面应用的三步…...

el-table-column prop值根据数组获取

方法一&#xff1a; 可以给el-table-column添加一个属性&#xff1a;formatter&#xff0c;代码如下&#xff1a; 这里是因为多个列都需要同样的计算&#xff0c;所以使用column.property获取属性&#xff0c;不然可以直接row.属性 方法二&#xff1a; 直接在template scope …...

MySQL_聚合函数分组查询

上篇复习&#xff1a; 设计数据库时的三大范式1.第一范式&#xff0c;一行数据中每一列不可再分 关系型数据库必须要满足第一范式&#xff0c;设计表的时候&#xff0c;如果每一列都可以用SQL规定的数据类型描述&#xff0c;就天然满足第一范式. 2.第二范式&#xff0c;在第一…...

PPT 制作神器!Markdown 轻松变幻灯片!

做过幻灯片的朋友们都知道&#xff0c;PPT 的制作常常是费时费力的工作。尤其是需要不断调整布局和设计的时候。 而现在&#xff0c;GitHub 上有一款开源免费的 PPT 制作工具 moffee&#xff0c;能够极大地简化这一过程。你只需通过简单的 Markdown 编写内容&#xff0c;即可快…...

一七八、Node.js PM2使用介绍

PM2 是一个强大的生产级 Node.js 进程管理器&#xff0c;提供了自动重启、负载均衡和进程监控等功能。适用于开发和生产环境&#xff0c;简化了 Node.js 应用程序的管理和维护。 PM2 安装 1. 使用 npm 安装 PM2 npm i -g pm2latest-g&#xff1a;全局安装。latest&#xff1a…...

基于CSU18M92芯片的蓝牙体重秤方案

传统体重秤只有一个数据的显示功能&#xff0c;将需称重物体放置在体重秤上&#xff0c;体重秤显示当前物体的数据&#xff0c;物体移开&#xff0c;数据消失&#xff0c;体重秤没有数据记录、存储、分析功能。智能体重秤与传统体重秤相比&#xff0c;可通过低功耗蓝牙与手机AP…...

深度学习经典模型之VGGNet

1 VGGNet 1.1 模型介绍 ​ VGGNet是由牛津大学视觉几何小组&#xff08;Visual Geometry Group, VGG&#xff09;提出的一种深层卷积网络结构&#xff0c;他们以7.32%的错误率赢得了2014年ILSVRC分类任务的亚军&#xff08;冠军由GoogLeNet以6.65%的错误率夺得&#xff09;和…...

Axure网络短剧APP端原型图,竖屏微剧视频模版40页

作品概况 页面数量&#xff1a;共 40 页 使用软件&#xff1a;Axure RP 9 及以上&#xff0c;非软件无源码 适用领域&#xff1a;短剧、微短剧、竖屏视频 作品特色 本作品为网络短剧APP的Axure原型设计图&#xff0c;定位属于免费短剧软件&#xff0c;类似红果短剧、河马剧场…...

ES + SkyWalking + Spring Boot:日志分析与服务监控(三)

目录 一、搭建SkyWalking 1.1 版本选择 1.2 下载安装 1.3 配置启动 1.4 SkyWalking UI介绍 二、Springboot项目使用 2.1 Agent下载 2.2 Agent配置skywalking oap地址 2.3 IDEA配置Agent地址 2.4 生成的ES索引介绍 三、在kibana上查看日志 四、问题和解决 3.1 日志…...

php 如何将数组转成对象数组

1. 使用 (object) 操作符&#xff1a; “php $array [‘name’ > ‘John’, ‘age’ > 25]; $object (object) $array; // 访问对象属性 echo $object->name; // 输出: John echo $object->age; // 输出: 25 “ 2. 使用 (stdClass)&#xff1a; “php $array …...

HTB:Photobomb[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机进行端口开放扫描 再次使用nmap对靶机开放端口进行脚本、服务扫描 使用ffuf进行简单的子域名扫描 使用浏览器直接访问该域名 选取一个照片进行下载&#xff0c;使用Yakit进行抓包 USER_FLAG&#xff1a;a9afd9220ae2b5731…...

图文组合-pytorch实现

在图文组合任务中&#xff0c;常见的图文融合方式有多种&#xff0c;比如简单的拼接、加权求和、注意力机制、跨模态Transformer等。为了让图片充分补充文本的语义信息&#xff0c;我们可以使用一种简单且有效的图文融合方法&#xff0c;比如通过注意力机制。 我们可以让文本特…...

CentOS AppStream 8 手动更新 yum源

由于CentOS 8的官方支持已在2021年12月31日结束&#xff0c;官方镜像中的CentOS 8包已被移除。因此&#xff0c;如果您仍然需要运行CentOS 8并更新其yum源&#xff0c;您可以考虑使用以下步骤来配置一个可用的yum源&#xff0c;例如阿里云的镜像源。 https://mirrors.aliyun.co…...

虚拟化环境中香港服务器内存如何分配与管理?

虚拟化技术通过创建抽象层来模拟硬件资源&#xff0c;使得可以在单一硬件上运行多个操作系统实例。这通常涉及两个主要组件&#xff1a;管理程序(Hypervisor)和虚拟机监控器(VMM)。管理程序直接安装在物理硬件上&#xff0c;负责创建和管理虚拟机&#xff0c;而VMM则用于监控和…...

Android源码中如何编译出fastboot.exe和adb.exe程序

1、方案背景说明 在进行android项目开发时&#xff0c;如果通用的fastboot工具无法满足项目的定制话的需求时&#xff0c;就需要对fastboot工具的源码进行自定义修改&#xff0c;并编译成新的fastboot和adb工具。 由于安卓源码的的编译通常使用的是ubuntu系统&#xff0c;默认…...

C++ 参数传递 笔记

目录 1、输入参数的传递方式-选择传值还是传引用&#xff1f; 处理用户信息 处理坐标 处理配置 处理ID 2、对于需要修改的参数,使用非const引用传递 有趣的例外&#xff1a;警惕表象的迷惑 需要警惕的陷阱 “糟糕”的update方法&#xff1a; “完美”的set_name与set…...

【Linux】注释和配置文件的介绍

目录 一、help vim-modes指令 二、vim命令模式下的注释 1、直接注释&#xff1a; 2、快捷键注释&#xff08;比较麻烦&#xff0c;了解即可&#xff09; 三、vim的配置文件 .vimrc 四、sudo指令的相关问题 一、help vim-modes指令 在底行模式输入该指令可以用于查看vim的十…...

安卓主板_基于联发科MTK MT8788平台平板电脑方案_安卓核心板开发板定制

联发科MT8788安卓核心板平台介绍&#xff1a; MTK8788设备具有集成的蓝牙、fm、wlan和gps模块&#xff0c;是一个高度集成的基带平台&#xff0c;包括调制解调器和应用处理子系统&#xff0c;启用LTE/LTE-A和C2K智能设备应用程序。该芯片集成了工作在2.0GHz的ARM Cortex-A73、最…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...