【leetcode刷题】面试经典150题 , 27. 移除元素
leetcode刷题
面试经典150
27. 移除元素
难度:简单
文章目录
- 一、题目内容
- 二、自己实现代码
- 2.1 方法一:直接硬找
- 2.1.1 实现思路
- 2.1.2 实现代码
- 2.1.3 结果分析
- 2.2 方法二:排序整体删除再补充
- 2.1.1 实现思路
- 2.1.2 实现代码
- 2.1.3 结果分析
- 三、 官方解法
- 3.1 双指针
- 3.1.1 算法实现
- 3.1.2 代码实现
- 3.1.3 代码分析
- 3.2 通用的
- 四、一些注意的地方
一、题目内容
给你一个数组 nums 和一个值 v a l val val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 v a l val val 的元素数量为 k k k,要通过此题,您需要执行以下操作:
- 更改 nums 数组,使 nums 的前 k k k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
- 返回 不相等的元素数 k k k
二、自己实现代码
2.1 方法一:直接硬找
2.1.1 实现思路
- 遍历 nums 列表
- 找到相等的元素,把这往后的所有元素往前移动,最后一个元素记录为 ‘-’
- 但是,可能往前移动的时候,会有两个相等元素相邻的情况,所以外面加了while判断一下
2.1.2 实现代码
class Solution(object):def removeElement(self, nums, val):""":type nums: List[int]:type val: int:rtype: int"""k = 0while(val in nums):for i in range(len(nums)):if nums[i] == val:k += 1for j in range(len(nums)-i-1):nums[i+j] = nums[i+j+1]nums[len(nums)-k] = "-"return len(nums) - k
2.1.3 结果分析

- 时间复杂度:O(n^2)
- 空间复杂度:O(1)
2.2 方法二:排序整体删除再补充
2.1.1 实现思路
- 找到有多少个不用的元素
- 将所有 v a l val val删掉
- 在删除后的nums上补充“-”
2.1.2 实现代码
class Solution(object):def removeElement(self, nums, val):""":type nums: List[int]:type val: int:rtype: int"""nums.sort()diff = len(nums) - nums.count(val)while val in nums:nums.remove(val)for i in range(diff): nums.append("-")return diff
2.1.3 结果分析

三、 官方解法
官方用了双指针来求
但是平时用python习惯了
虽然知道指针好
但是好难养成用指针的习惯呀
参考了宫水三叶的解法,并转换为了python版本
https://leetcode.cn/problems/remove-element/solutions/575555/shua-chuan-lc-shuang-bai-shuang-zhi-zhen-mzt8/
3.1 双指针
3.1.1 算法实现
分成两个阶段
- 前面:存储不等于 v a l val val的元素
- 后面:存储= v a l val val的元素
- 直接一个新的 j j j,相等的跳过,不相等的往下填写到数组里进行覆盖
3.1.2 代码实现
class Solution(object):def removeElement(self, nums, val):""":type nums: List[int]:type val: int:rtype: int"""j = 0for i in range(len(nums)):if nums[i] != val:nums[j] = nums[i]j += 1return j
3.1.3 代码分析

- 时间复杂度:O(n)
- 空间复杂度:O(1)
3.2 通用的
和26题目解法有关,还没有写到,等写到了再看吧
四、一些注意的地方
- 多想一想双指针,用下来真的会方便好多
相关文章:
【leetcode刷题】面试经典150题 , 27. 移除元素
leetcode刷题 面试经典150 27. 移除元素 难度:简单 文章目录 一、题目内容二、自己实现代码2.1 方法一:直接硬找2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 2.2 方法二:排序整体删除再补充2.1.1 实现思路2.1.2 实现代码2.1.3 结果分析 三、…...
红队内网攻防渗透:内网渗透之内网对抗:横向移动篇PTH哈希PTT票据PTK密匙Kerberoast攻击点TGTNTLM爆破
红队内网攻防渗透 1. 内网横向移动1.1 首要知识点1.2 PTH1.2.1 利用思路第1种:利用直接的Hash传递1.2.1.1、Mimikatz1.2.2 利用思路第2种:利用hash转成ptt传递1.2.3 利用思路第3种:利用hash进行暴力猜解明文1.2.4 利用思路第4种:修改注册表重启进行获取明文1.3 PTT1.3.1、漏…...
springBoot不同module之间互相依赖
在 Spring Boot 多模块项目中,不同模块之间的依赖通常是通过 Maven 或 Gradle 来管理的。以下是一个示例结构和如何设置这些依赖的示例。 项目结构 假设我们有一个多模块的 Spring Boot 项目,结构如下: my-springboot-project │ ├── p…...
[modern c++] 类型萃取 type_traits
前言: #include <type_traits> type_traits 又叫类型萃取,是一个在编译阶段用于进行 类型判断/类型变更 的库,在c11中引入。因为其工作阶段是在编译阶段,因此被大量应用在模板编程中,同时也可以结合 constexpr…...
函数模板和类模板的区别
函数模板和类模板在C中都是重要的泛型编程工具,但它们之间存在一些显著的区别。以下是它们之间的主要区别: 实例化方式: 函数模板:隐式实例化。当函数模板被调用时,编译器会根据传递给它的参数类型自动推断出模板参数…...
ChatGPT 提示词技巧一本速通
目录 一、基本术语 二、提示词设计的基本原则 三、书写技巧 2.1 赋予角色 2.2 使用分隔符 2.2 结构化输出 2.3 指定步骤 2.4 提供示例 2.5 指定长度 2.6 使用或引用参考文本 2.7 提示模型进行自我判断 2.8 思考问题的解决过程 编辑 2.10 询问是否有遗漏 2.11 …...
【windows解压】解压文件名乱码
windows解压,文件名乱码但内容正常。 我也不知道什么时候设置出的问题。。。换了解压工具也没用,后来是这样解决的。 目录 1.环境和工具 2.打开【控制面板】 3.点击【时钟和区域】 4.选择【区域】 5.【管理】中【更改系统区域设置】 6.选择并确定…...
使用Flink CDC实时监控MySQL数据库变更
在现代数据架构中,实时数据处理变得越来越重要。Flink CDC(Change Data Capture)是一种强大的工具,可以帮助我们实时捕获数据库的变更,并进行处理。本文将介绍如何使用Flink CDC从MySQL数据库中读取变更数据࿰…...
学生课程信息管理系统
摘 要 目前,随着科学经济的不断发展,高校规模不断扩大,所招收的学生人数越来越 多;所开设的课程也越来越多。随之而来的是高校需要管理更多的事务。对于日益增 长的学生相关专业的课程也在不断增多,高校对其管理具有一…...
如何看待鸿蒙HarmonyOS?
鸿蒙系统,自2019年8月9日诞生就一直处于舆论风口浪尖上的系统,从最开始的“套壳”OpenHarmony安卓的说法,到去年的不再兼容安卓的NEXT版本的技术预览版发布,对于鸿蒙到底是什么,以及鸿蒙的应用开发的讨论从来没停止过。…...
【论文复现|智能算法改进】一种基于多策略改进的鲸鱼算法
目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 SCI二区|鲸鱼优化算法(WOA)原理及实现【附完整Matlab代码】 2.改进点 混沌反向学习策略 将混沌映射和反向学习策略结合,形成混沌反向学习方法,通过该方 法…...
yarn安装配置及使用教程
Yarn 是一款 JavaScript 的包管理工具,是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具,它提供了确定性、依赖关系树扁平化等特性,并且与 npm 完全兼容。以下是 Yarn 的安装及使用教程: Yarn 安装…...
有那么点道理。
...
蔚蓝资源包和数据分析
代码如下 /* * COMPUTER GENERATED -- DO NOT EDIT* */#include <windows.h>static FARPROC __Init_Fun_2__; int __RestartAppIfNecessary__Fun() {return 0; } int Init_Fun() {__Init_Fun_2__();return 1; }static FARPROC __GameServer_BSecure__; static FARPROC _…...
MySQL----利用Mycat配置读写分离
首先确保主从复制是正常的,具体步骤在MySQL----配置主从复制。MySQL----配置主从复制 环境 master(CtenOS7):192.168.200.131 ----ifconfig查看->ens33->inetslave(win10):192.168.207.52 ----ipconfig查看->无线局域网适配器 WLA…...
【科学计算与可视化】2. pandas 基础
1. 安装 Pandas 首先,确保你已经安装了 Pandas。你可以使用以下命令安装:pip install pandas 2. 导入 Pandas 在开始使用 Pandas 之前,你需要先导入它:import pandas as pd 3. 创建数据结构 Pandas 主要有两种数据结构&#…...
医学记录 --- 腋下异味
逻辑图地址 症状 病因 汗液分泌旺盛:由于天气炎热、活动出汗、肥胖等因素导致汗液分泌旺盛,可引起腋下有异味表现。在这种情况下,建议保持身体清洁,特别是在炎热和潮湿的环境下。可以使用抗菌洗液、喷雾或霜剂来帮助减少细菌滋…...
【Linux】进程间通信_1
文章目录 七、进程间通信1. 进程间通信分类管道 未完待续 七、进程间通信 进程间由于 进程具有独立性 ,所以不可以直接进行数据传递。但是我们通常需要多个进程协同,共同完成一件事,所以我们需要进程间通信的手段。进程间通信的本质就是先让…...
Linux Kernel入门到精通系列讲解(RV-Kernel 篇) 5.6 在kernel 中实现系统复位和系统关机驱动
1. 概述 上一章节Qemu篇我们已经实现了我们SOC的power reset和 power down 寄存器,本章节我们就在Linux driver中去实现它。 2. Linux kernel 访问其他节点 Linux kernel中有一种机制,就是在driver中访问其它设备树节点的信息,了解设备树的应该都知道,每个设备节点都有一…...
如何在Java中进行单元测试?
如何在Java中进行单元测试? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java中进行单元测试,这是一项确保代码质…...
如祺出行2025年营收53亿:网约车贡献97%收入 净亏2.9亿
雷递网 乐天 4月1日如祺出行科技有限公司(股份代号:9680)日前发布截至2025年12月31日的财报。财报显示,如祺出行2025年营收为52.86亿元,较上年同期的24.63亿元增长114.6%。如祺出行收入主要来自网约车服务,…...
松下Panasonic伺服调试软件 适配MINAS-A/A3/A4/B/E/S及MDDA/MH...
松下Panasonic 伺服调试 软件 支持MINAS-A A3 A4 B E S 英文版 MDDA、MHDA、MSMA、MSDA、MDMA、可以修改参数、JOG点动调试、参数拷贝、复制等 松下 伺服 软件刚拿到台新拆箱的MHDA-MA3A1A伺服驱动器?或者翻出实验室积灰好几年的MSMA电机搭MDDA A1板子练手ÿ…...
实战利器:借助快马平台构建磁盘空间分析器,cmd命令深度应用
今天想和大家分享一个非常实用的工具开发经验——如何用cmd命令构建一个磁盘空间分析器。这个工具在我们日常系统维护和磁盘管理中特别有用,尤其是当C盘突然变红或者需要清理大文件的时候。 工具核心功能设计 这个磁盘空间分析器主要解决几个实际问题:…...
Python胶水代码变高性能引擎(Mojo原生编译实战手记)
第一章:Python胶水代码变高性能引擎(Mojo原生编译实战手记)Python 以其简洁语法和丰富生态成为数据科学与系统集成的“胶水语言”,但其解释执行机制常在数值计算、实时推理等场景遭遇性能瓶颈。Mojo 作为新兴的系统级编程语言&…...
【Java低代码组件调试黄金法则】:20年架构师亲授5大高频故障定位技巧,90%开发者从未听说
第一章:Java低代码组件调试的本质与认知跃迁Java低代码平台并非屏蔽复杂性,而是将复杂性重新封装、可视化与可追溯化。调试低代码组件的本质,是穿透表层拖拽逻辑,定位其背后生成的Java字节码、Spring Bean生命周期行为、以及运行时…...
大数据:Hadoop(Yarn)
第1章 Yarn资源调度器Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。1.1 Yarn基础架构1.2 Yarn工作机制(1)…...
OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案
OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher…...
Windows屏幕取色器ColorWanted:设计师和开发者的效率神器
Windows屏幕取色器ColorWanted:设计师和开发者的效率神器 【免费下载链接】ColorWanted Screen color picker for Windows (Windows 上的屏幕取色器) 项目地址: https://gitcode.com/gh_mirrors/co/ColorWanted 你是否经常需要在设计软件、网页开发或UI设计中…...
Reaxys没权限?试试这个国产化学数据库MolAid:免费注册+中文界面实操指南
Reaxys没权限?试试这个国产化学数据库MolAid:免费注册中文界面实操指南 在化学研究领域,获取高质量的化合物数据是实验设计和论文写作的基础。然而,许多国际知名数据库如Reaxys需要机构订阅才能使用,这让独立研究人员和…...
08-多平台集成实战
OpenClaw 多平台集成实战 “让 AI 助手跨越每个通讯渠道,无处不在。” — OpenClaw 在当今多元化的通讯环境中,一个优秀的 AI 助手不应该被限制在单一平台上。OpenClaw 的核心优势之一就是其强大的多平台集成能力,能够同时连接 Discord、Telegram、飞书、企业微信、QQ、钉钉…...
