面试经典(2/150)移除元素

面试经典(2/150)移除元素

python 复制代码
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

思路:使用双指针

遍历数组,当前值不是要移除的元素时

将值赋给用来记录的指针,并将慢指针加1

快指针加1

python 复制代码
class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        a = 0#移动指针
        b = 0#记录指针

        while a < len(nums):#遍历数组
            if nums[a] != val:#如果当前值不是指定值
                nums[b] = nums[a]#将当前值赋给记录指针,不用考虑新长度后边的元素
                b += 1
            a += 1
        return b

参考链接:https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150

相关推荐
初学小刘1 小时前
基于 U-Net 的医学图像分割
python·opencv·计算机视觉
B站计算机毕业设计之家1 小时前
Python招聘数据分析可视化系统 Boss直聘数据 selenium爬虫 Flask框架 数据清洗(附源码)✅
爬虫·python·selenium·机器学习·数据分析·flask
雪碧聊技术1 小时前
爬虫是什么?
大数据·爬虫·python·数据分析
FL16238631291 小时前
[yolov11改进系列]基于yolov11使用fasternet_t0替换backbone用于轻量化网络的python源码+训练源码
python·yolo·php
Freshman小白1 小时前
python算法打包为docker镜像(边缘端api服务)
python·算法·docker
岁岁岁平安1 小时前
python mysql-connector、PyMySQL基础
python·mysql·pymysql
铁锹少年2 小时前
当多进程遇上异步:一次 Celery 与 Async SQLAlchemy 的边界冲突
分布式·后端·python·架构·fastapi
梨轻巧2 小时前
pyside6常用控件:QCheckBox() 单个复选框、多个复选框、三态模式
python
寒秋丶2 小时前
Milvus:集合(Collections)操作详解(三)
数据库·人工智能·python·ai·ai编程·milvus·向量数据库
寒秋丶2 小时前
Milvus:Schema详解(四)
数据库·人工智能·python·ai·ai编程·milvus·向量数据库