leetcode 之(移除元素)

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

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

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

思路

使用左右双指针,左指针从左侧开始找需要移除的元素,右指针从右往左找不需要移动的元素,找到后,把右指针的值赋给当前左指针,然后继续往中间找:

  • 左右侧指针重合时:判断当前值是否需要移除 需要 返回指针索引值,不需要 返回 指针索引值+1;
  • 左指针在右指针右侧时:返回左指针索引值;
class Solution {public int removeElement(int[] nums, int val) {// 定义等于val 时的默认值// 双指针 前后指针int left = 0, right = nums.length - 1;while (left <= right) {// 如果左指针等于val 右指针不等于valif (val == nums[left] && val != nums[right]) {// 把右指针的值赋给左指针 移动左指针nums[left++] = nums[right--];} else if (val != nums[left]) {// 如果左指针不等于val 移动左指针left++;}// 如果右指针等于val,移动右指针if (val == nums[right]) {right--;}// 如果左指针位置不在右指针左侧,if (left >= right) {// 1.左指针位置在右指针左侧,说明已经全部移动完成,返回左指针位置(不包含当前位置)// 2.如果左右指针在同一位置 判断 当前位置的值是否等于val// 2.1 如果等于val 返回左指针位置(不包含当前位置)// 2.2 如果不等于val 返回 左指针位置+1(包含当前位置)return left > right || val == nums[left] ? left : ++left;}}return 0;}
}

复杂度

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC 请求与响应

目录 一、Spring MVC 请求 1.1 请求映射核心注解&#xff1a;RequestMapping 1.1.1 作用范围 1.1.2 属性详解 1.2 请求参数绑定机制 1.2.1 绑定规则 1.2.2 特殊场景处理 二、Spring MVC 响应 2.1 视图返回机制 2.1.1 String类型返回 2.1.2 ModelAndView对象 2.2 JS…

spring-security原理与应用系列:核心过滤器

目录 运行机制 WebSecurity SecurityFilterChain SecurityFilterChains FilterChainProxy VirtualFilterChain 内部结构 类图 FilterChainProxy FilterChain VirtualFilterChain 小结 紧接上一篇文章&#xff0c;这一篇我们来看看FilterChainProxy类的运行机制及内…

Android之卡片式滑动

文章目录 前言一、效果图二、实现步骤1.主界面xml2.自定义的viewpage3.卡片接口类4.阴影和缩放变化类5.卡片adapter6.卡片adapter的xml7.style8.CardItem9.activity实现10.指示器drawable 总结 前言 对于这个需求&#xff0c;之前的项目也有做过&#xff0c;但是过于赶项目就没…

字典树与01trie

字典树简介 当我们通过字典查一个字或单词的时候&#xff0c;我们会通过前缀或关键字的来快速定位一个字的位置&#xff0c;进行快速查找。 字典树就是类似字典中索引表的一种数据结构&#xff0c;能够帮助我们快速定位一个字符串的位置。 字典树是一种存储字符串的数据结构…

基于SpringBoot的电影售票系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

R语言机器学习算法实战系列(二十二)特征选择之递归特征消除(REF)算法

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理步骤教程数据下载加载R包导入数据数据预处理数据分割Recursive Feature Elimination运行RFE过程选择重要特征基于重要特征构建随机森林模型混淆矩阵评估模型AUC曲线刻画模型在训…

日事清甘特图制作工具:一键生成,精准管理项目周期

在工作中&#xff0c;我们很多岗位都经常需要对项目进度进行追踪&#xff0c; 例如人事经理需要要追踪招聘进度或员工培训计划&#xff0c;项目经理负责监督项目的各个阶段以保证按计划执行&#xff0c;软件研发经理则需确保功能迭代的及时交付&#xff0c;而市场经理负责监控…

vue 加载动态效果,自行封装组件

背景&#xff1a; 在项目开发中&#xff0c;会请求接口&#xff0c;就会遇到加载中、加载成功、加载失败、和加载成功但暂无数据等情况。就自行封装了一个加载组件。采用vue3elementsetup组合式写法。 实现效果&#xff1a; 封装组件&#xff1a; //封装组件 <template>…

SQLark SQL编辑器秘籍,编写高效SQL查询

SQLark 是一款功能强大的数据库开发和管理工具&#xff0c;用于快速查询、创建和管理不同类型的数据库系统&#xff0c;支持达梦、Oracle 和 MySQL 数据库。SQLark内置的 SQL 编辑器&#xff0c;基于语法解析&#xff0c;集成智能提示、实时语法检查及语法高亮等功能&#xff0…

Flutter项目之table页面实现

目录&#xff1a; 1、首页页面index.dart&#xff08;首页table页面&#xff09; 1、首页页面 效果图&#xff1a; index.dart&#xff08;首页table页面&#xff09; import package:flutter/material.dart; import package:flutter_haoke/pages/home/info/index.dart; impo…

【学习笔记】卷积网络简介及原理探析

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程&#xff0c;深度学习领域研究生必读教材),开始深度学习领域学习&#xff0c;深入全面的理解深度学习的理论知识。 之前的文章参考下面的链接&#xf…

【北京迅为】iTOP-RK3568开发板鸿蒙OpenHarmony系统南向驱动开发实操-HDF驱动配置UART

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【蓝桥杯每日一题】3.25

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x “OJ超时不是终点&#xff0c;是算法在提醒你该优化时间复杂度了&#xff01;” 目录 3.25 差分数组 一、一维差分 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a;…

穿透Session 0隔离

1、前言 在 Windows XP 和 Windows Server 2003 之前&#xff0c;用户和服务会共享同一个会话&#xff0c;而这个会话是由第一个登录到控制台的用户来启动的&#xff0c;该会话就称为Session 0。 而从Windows Vista 开始&#xff0c;Windows 采取了会话隔离的措施&#xff0c;…

大模型思维链COT:Chain-of-Thought Prompting Elicits Reasoningin Large Language Models

一、TL&#xff1b;DR 探索了COT&#xff08;chain-of-thought prompting&#xff09;通过一系列的中间推理步骤来显著的提升了LLM的复杂推理能力在三个大型语言模型上的实验表明&#xff0c;思维链提示能够提升模型在一系列算术、常识和符号推理任务上的表现解释了一下为什么…

颠覆传统:SaaS 品牌如何通过 SEO 策略引爆市场!

SaaS 商业模式提供了令人难以置信的可扩展性和盈利能力——但前提是与正确的营销增长策略相结合。 SaaS 品牌知道&#xff0c;托管基于云的应用程序的成本会随着用户量的增加而降低&#xff0c;因此必须专注于订阅者的快速增长&#xff0c;以保持竞争力并降低成本。 许多 CMO…

大模型训练 | 智能体知识库 资源收集之心理咨询问答数据集

最近我一直在研究AI大模型相关的内容&#xff0c;想着从现在开始慢慢收集各种各样的资源&#xff0c;万一以后需要训练大模型的时候可以用到&#xff0c;或者自己以后也许会需要。今天我想介绍一组“心理咨询问答数据集”产品&#xff0c;包含9414条心理咨询问答数据&#xff0…

vivado 创建生成时钟

创建生成时钟 生成时钟源自另一个现有时钟 &#xff08;主时钟&#xff09;。通常用来描述由逻辑块在主时钟上执行的波形变换。由于生成时钟的定义 取决于主时钟特性&#xff0c;因此必须首先定义主时钟。要明确定义生成时钟&#xff0c;必须使用 create_generated_clock 命…

数据清洗:基于python抽取jsonl文件数据字段

基于python抽取目录下所有“jsonl”格式文件。遍历文件内某个字段进行抽取并合并。 import os import json import time from tqdm import tqdm # 需要先安装&#xff1a;pip install tqdmdef process_files():# 设置目录路径dir_path r"D:\daku\关键词识别\1623-00000…