快慢指针解决 LeetCode 数组移除元素

2023-11-20

题面:

  1. 移除元素
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝
int len = removeElement(nums, val);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。
示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

提示:

0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100

思路:

本题要求不能新开辟空间,只能在原数组里进行修改,思路是定义两个指针指向数组的头部,快指针Fast 负责迅速遍历数组,慢指针Slow 负责将数组中与val不等的值原地覆盖,Slow每赋值一次就要加一,指向下一位置。

		nums = [1,2,2,2,3,4,5,2,2]
		val = int(input("请输入目标值:"))
		Fast,Slow = 0,0
        for Fast in range(len(nums)):
            if nums[Fast] != val:
                nums[Slow] = nums[Fast]
                Slow += 1
        print(Slow)
        print(nums)

#Output
#请输入目标值:2
#4
#[1, 3, 4, 5, 3, 4, 5, 2, 2]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快慢指针解决 LeetCode 数组移除元素 的相关文章

随机推荐

  • 多益网络笔试

    一笔 2017 05 19 基本上考的是写概率题和智力题 没来得及整理就忘得差不多 最后一个题是个推理题 二笔 2017 05 25 单选 C 的基础知识 二叉树结点计算 填空 类的操作 结构体 联合体的大小计算 简答 1 如何理解虚析构
  • Excel VBA获取最后一行列

    测试excel文件 VBA代码 Function getLastRow Debug Print End xlUp Sheets 1 A65536 End xlUp Row Debug Print usedRange ActiveSheet
  • Linux操作文档——FTP文件传输服务

    文章目录 一 基本概念 1 FTP连接及传输模式 2 用户列表文件ftpusers和user list 二 基于系统用户的FTP服务 1 匿名访问的FTP服务 2 用户验证的FTP服务 三 基于虚拟用户的FTP服务 1 建立虚拟用户的账号数
  • 网站页面导入css,图片等文件的相对路径和绝对路径问题

    相对路径 表示上一级目录开始 表示当前同级目录开始 相对 肯定是个参考对象 很多人可能会认为这个参考对象就是导入css或图片等的页面 但其实对于网站访问而言 这个对象是参考你所访问的url地址的 因为最近在写thinkphp 相对的话对于t
  • Angular6以ng serve方式启动时指定环境方法及关联知识点

    一 踩坑 1 问题来源 如何自定义环境并在启动时指定环境 2 解决方案 使用configuration参数启动项目 如ng serve configuration local or ng serve c local启动名为local的环境
  • 【C语言】C语言零碎知识点

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 1 sizeof和strlen 2 函数形参 很重要 2
  • Android Studio中的Java控制台中出现乱码问题?

    今天在用Android studio 中敲代码时发现控制台出不了汉字 一打汉字全是乱码的 在此特供解决方案 在Java的工程目录build gradle下添加如下代码 1 新版gradle tasks withType JavaCompil
  • “AI+大数据+智能机器人”新型政企运营服务模式

    在建设智慧城市的大背景下 人工智能技术在智慧政务方面已有多个重点建设场景 即通过 互联网 政务服务 构建智慧型政企 利用 AI 大数据 智能机器人 的模式构建智慧政务服务平台 不断探索新型政企运营服务模式 提升服务水平和效率 实现由 传统政
  • Fatal error: Uncaught --> Smarty: unable to write file

    多是文件权限问题 chmod R 777 该文件夹下所有文件
  • Nacos配置与本地配置优先级

    概述 由Apollo配置中心与本地配置优先级 引出的一个问题 号称时下最强的注册中心和配置中心 表现如何 调研 直接上代码 本地配置文件application dev yml 新增配置 test aaa 接口层的测试方法 Value tes
  • windows 10 环境下 的 flutter 环境配置教程及 问题解决办法

    最近开始接触flutter 小白一枚 记录一下最近安装flutter的过程 因为自己电脑已经安装了Android Studio 和 git 工具 因此直接从安装flutter说起 1 去官网下载flutter 安装包 https flutt
  • ElasticSearch教程

    第一章 ElasticSearch入门篇 第一节 ElasticSearch概述 1 1ElasticSearch是一个基于Lucene的搜索服务器 它提供了一个分布式多用户能力的全文搜索引擎 基于RESTfulweb接口 ElasticS
  • Signature verification failed on downloaded file

    下载文件上签名验证失败 原因 为了验证文件下载过程中是否出现丢包或其他原因导致文件出现损坏 会对比前后的hash码 不一致就会报错 Hash码 基于文件的内容通过算法得到的数值 与文件的名称无关 根据文件内容计算
  • STM32F103C8移植uCOSIII(HAL库)

    少年 一 随笔 二 uCOSIII源码 三 项目导入文件整理 四 导入文件和增加头函数路径 五 代码改动 六 参考资料 一 随笔 移植一个嵌入式系统用了一天时间 只能说不愧是我 在不了解的情况下还是少一些自己的操作 自己挖坑埋自己 记录一下
  • JavaEE项目实战(OA系统)之十九_流程审批之二

    JavaEE项目实战 OA系统 之十九 流程审批之二 这部分的程序界面原型如下 1 请假页面 员工如需请假 在登录系统后 点击请假功能 填写各项数据后 提交审批 也可以暂时不提交 将内容保存为草稿 以后可以加入功能 查看我的请假 和 草稿箱
  • 【Linux】Linux中jar包的压缩和解压缩

    1 概述 问题 在生产环境 有时会有需要修改jar中url的需求 目前我遇到的 此时 unzip tar命令都失去了用武之地 解决办法 假如文件 是file jar ls l xx xxx xx flink lang jar xx xxx
  • 端口访问被拒绝的解决方案

    端口访问被拒绝的解决方案 ps 本人亲测 阿里云2核4G5M的服务器性价比很高 新用户一块多一天 老用户三块多一天 最高可以买三年 感兴趣的可以戳一下 阿里云折扣服务器 问题描述 比如在本机telent到192 168 8 170 主机的9
  • 02Linux下C语言锁的学习之Linux下的读写锁

    02Linux下C语言锁的学习之Linux下的读写锁 概述 下面的锁的意思均是代表读写锁 读写锁的特性 1 若一把锁被一个线程以读方式锁住 当其它线程以读方式上锁的话 那么可以上锁成功 2 若一把锁被一个线程以写方式锁住 当其它线程以读或者
  • JavaScript HSL拾色器

    HSL 和 HSV 在数学上定义为在 RGB 空间中的颜色的 R G 和 B 的坐标的变换 从 RGB 到 HSL 或 HSV 的转换 设 r g b 分别是一个颜色的红 绿和蓝坐标 它们的值是在 0 到 1 之间的实数 设 max 等价于
  • 快慢指针解决 LeetCode 数组移除元素

    题面 移除元素 给你一个数组 nums 和一个值 val 你需要 原地 移除所有数值等于 val 的元素 并返回移除后数组的新长度 不要使用额外的数组空间 你必须仅使用 O 1 额外空间并 原地 修改输入数组 元素的顺序可以改变 你不需要考