双指针简化双for循环系列(一)27.移除元素

2023-10-30

在这里插入图片描述
https://leetcode-cn.com/problems/remove-element/

class Solution {
    public int removeElement(int[] nums, int val) { 
        
        // 快慢指针
        int fastIndex = 0;
        int slowIndex;
        for (slowIndex = 0; fastIndex < nums.length; fastIndex++) {
            if (nums[fastIndex] != val) {
                nums[slowIndex] = nums[fastIndex];
                slowIndex++;
            }
        }
        return slowIndex;

    }
}

简单理解就是慢指针一直记录着,允许返回的元素,一旦遇到删除的元素,慢指针停止,快指针去找有没有可以替换它的。

思路来自https://programmercarl.com/0027.移除元素.html#_27-移除元素

还有一道类似的题目:
在这里插入图片描述
https://leetcode-cn.com/problems/move-zeroes/
第一次提交:

class Solution {
    public void moveZeroes(int[] nums) {
    int slow = 0; 
    int fast = 0;
    for (; fast < nums.length; fast++) {
        if (nums[fast] != 0) {
           nums[slow] = nums[fast]; 
           slow++;  
        }
    }

    //把后面的数都变成0
    for (; slow < nums.length; slow++) {
        nums[slow] = 0; 
    }
    }
}

在这里插入图片描述

按照评论区思路改一下做法

class Solution {
    public void moveZeroes(int[] nums) {
     int slow = 0; 
     int fast = 0;
     for (; fast < nums.length; fast++) {
         if (nums[fast] != 0) {
             if (fast != slow) {
                 nums[slow] = nums[fast]; 
                 nums[fast] = 0;
             }
            slow++;  
         }
     }
 }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

双指针简化双for循环系列(一)27.移除元素 的相关文章

  • java字符串索引越界异常

    从类中调用函数时出现以下错误 java lang StringIndexOutOfBoundsException 字符串索引超出范围 1 尽管我使用系统打印来查看我在 substring 函数中传递的输入 但一切似乎都是正确的 函数 isC
  • 将 4 个字节转换为无符号 32 位整数并将其存储在 long 中

    我正在尝试用 Java 读取二进制文件 我需要读取无符号 8 位值 无符号 16 位值和无符号 32 位值的方法 执行此操作的最佳 最快 最美观的代码 是什么 我在 C 中做到了这一点 并做了类似的事情 uint8 t buffer uin
  • 继续使用 sketch.js 编辑草图图像 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在使用 sketch js 中的示例 http intridea github io sketch js http intridea g
  • 从 HashMap 条目列表中删除重复项

    我有一个List
  • 无法获取未知属性“运行时”Gradle 7.0

    我最近切换到 gradle 7 0 现在无法构建我的项目 jar 并出现错误 无法获取 org gradle api internal artifacts configurations DefaultConfigurationContain
  • 如何在Intellij IDEA中复制maven依赖项到输出工件WEB-INF/lib?

    我知道在 eclipse maven 中可以将依赖项复制到 WEB INF lib 目录setting Deployment Assembly and Build Path 但是我怎样才能用 Intellij IDEA 实现这一点呢 好的
  • Java GUI,根据actionListener更改面板

    我在两个不同的面板中添加了两个按钮 如果单击第一个按钮 则需要转到下一个面板 其中包含第二个按钮 但是当我单击第一个按钮时 该按钮没有被替换 Java GUI import java awt event ActionEvent import
  • 如何跨工作区保存 E​​clipse 启动配置文件?

    当我复制 Eclipse 项目目录时 它包含 classpath 和 project 文件 这样当我将同一目录带到另一个 Eclipse 实例时 我不必设置我的构建路径等 假设所有资源都包含在在项目中 而不是外部 但是 此过程不会导致启动配
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • HttpMediaTypeNotAcceptableException / HttpMediaTypeNotAcceptableException:找不到可接受的表示

    我有一个客户端正在尝试连接的 API 但是它会抛出错误 2015 09 22 04 21 44 297 org springframework web servlet mvc method annotation HttpEntityMeth
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • 选择活动时运行时崩溃

    首先我想说我几乎没有 Android 经验 这是我在 Android 中的第一个项目 而且我的老师不太擅长教学 所以我对任何过度的无知表示歉意 在进一步讨论之前先解释一下 我的应用程序的目标本质上是能够记录您在某些活动上花费了多少时间 记录
  • 访问 JAR 资源

    我有一个jar包含我想要分发的资源 主要是缓存 日志记录等配置 的文件 我对这些资源的相对路径有问题 所以我做了我在另一个 stackoverflow 问题中发现的问题 该问题说这是一种有效的方法 ClassInTheSamePackage
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 是否可以从外部闪存驱动器运行 java (jdk-windows)、Eclipse (indigo) 和 Android-sdk 进行 Android 应用程序开发

    我想知道我们是否可以通过在外部闪存驱动器上保存所需的软件来在我们使用的任何计算机上开发我们的android应用程序 我的意思是在闪存驱动器上安装java eclipse和android sdk 所以最后我们可以将闪存带到任何地方计算机并在任
  • 找不到 `activityViewModels()` Hilt Android

    我在我的项目中使用 Hilt 和 MVVM 我想要一个viewModel from activityViewModel在 2 个活动中使用相同的内容 但我的 Android Studio 说未解析的参考 我的应用程序 build gradl
  • Mac 上的 JavaFX WebView 字体问题

    有些网站显示乱码而不是正确的文本 它只发生在 Mac 上 For example with GMapsFX 可能与 OS X 10 11 或 10 12 有关 我用Java 1 8 0 121测试了它 此问题有任何修复或解决方法吗 就我而言

随机推荐

  • forEach()退出循环的方法

    在for循环中退出循环有3种方式 return 终止 break 退出整个循环 continue 退出当次循环 forEach 只能识别上面三种退出循环中的return 其它都识别不了 且return在forEach 中相当于continu
  • ThreadLocal失效

    在JDK中 解决线程冲突问题 有两种解决方案 l 给临界区加锁 l 本地化临界区 第一种解决方案的典型代表是Synchonized 第二种的典型代表是ThreadLocal 而CopyOnWrite是这两种方案的融合 ThreadLocal
  • Arduino通过L298N红板控制板控制直流电机

    在Arduino论坛上看到很多人都做过智能小车 有两轮的 有四轮的 功能也是多种多样 有寻迹 壁障 无线遥控 红外遥控的 其实小车就是个底盘或者载体 然后可以根据需要向小车上加功能模块 于是我在淘宝上买了一个四轮小车的架子 里面包括四个轮子
  • python解包的概念_如何以编程方式为解包结构?

    我试图用Python读取和解析一个二进制文件 在 问题是文件中的数据可以是little endian或big endian格式 也可以是32位或64位的值 在文件头中有几个字节指定数据格式和大小 假设我已经读过这些 并且知道格式和大小 然后
  • SWM32系列教程7-I2C及其应用

    SWM32S单片机有2个I2C外设 其特点如下 支持最高1MHZ速率主机模式 支持最高400KHZ速率从机模式 支持7位或10位地址 波特率可配置 支持中断功能 今天就以驱动电容触摸芯片GT911为例 介绍一下I2C模块的使用 配置I2C之
  • 前端实现打印功能

    目录 方法一 window print 方法二 利用iframe iframe contentWindow print 方法三 使用第三方库或插件 提供一个完整的范例 1 设计打印布局 2 创建打印版本 3 使用JavaScript控制打印
  • C++核心编程 之类和对象(二)

    目录 1 2 对象的初始化和清理 1 2 1 构造函数和析构函数 构造函数语法 析构函数语法 1 2 2 构造函数的分类和调用 1 2 3 拷贝构造函数调用时机 1 2 4 构造函数调用规则 1 2 5 深拷贝与浅拷贝 1 2 6 初始化列
  • 1-Linux_虚拟机VMware 15安装教程

    虚拟机VMware 15安装教程 https www onlinedown net soft 2062 htm 1 由上面的网址下载VMware 15后双击运行安装程序点击下一步 进行安装 2 在最终用户许可协议界面选中 我接受许可协议中的
  • 为什么要用TSubClassOf

    2019独角兽企业重金招聘Python工程师标准 gt gt gt TSubclassOf 是提供 UClass 类型安全性的模板类 例如您在创建一个投射物类 允许设计者指定伤害类型 您可只创建一个 UClass 类型的 UPROPERTY
  • vsocde vue snippet 设置

    vue snippt 设置 建议下在一个 vetur extensions 1 首先打开 vue json 文件 ctrl p 搜索 vue json 文件 enter File gt preferences gt User sneppts
  • MSBuild入门

    MSBuild是什么 MSBuild全称 Microsoft Build Engine 是用于构建应用程序的平台 您可能不知道它 但是如果您在使用VS做开发 那么一定时时刻刻在使用它 因为是它在背后为你管理生成你的项目文件 当新建一个项目时
  • ARM汇编指令集·带例题

    目录 32位ARM汇编指令集 32位数据操作指令 32位存储器数据传送指令 32位转移指令 其它32位指令 指令具体用法 数据处理指令 MOV指令 ADD指令 SUB指令 MUL指令 CMP指令 ORR逻辑或 BIC指令 转移指令 B指令
  • Maven进阶-配置私服(Nexus 的使用)

    Maven进阶 配置私服 Nexus 的使用 引言 一 Nexus 的下载 二 Nexus 启动服务器 三 首次配置 Nexus 四 新建仓库 五 设置仓库组 六 仓库的 URL 七 Maven 的配置 1 配置 mirror 2 配置 s
  • mysql select into 新表_SELECT INTO 语句数据表全表复制备份

    select into 语句数据表全表复制备份 select into 语句常用于创建表的备份复件或者用于对记录进行存档 sql select into 语法 您可以把所有的列插入新表 select into new table name
  • C++replace_all strip函数

    replace all occurance of t in s to w void replace all std string s std string const t std string const w string size typ
  • python语言需要注意的几点

    keyword kwlist可以打印出python所有关键字 import keyword print keyword kwlist 不需要使用大括号 但必须对齐 if True print Answer print True else p
  • 接口测试的标准和规范性

    一 接口测试测试点 1 要考虑接口的正常调用 1 按照接口定义 传递正确的接口信息 包括地址 方法 传输数据 然后查看接口返回的响应结果是否正确 数据库的数据是否正确 2 传递的请求数据需要覆盖有效类 边界值 3 返回的响应结果的每个字段都
  • Nginx简介及配置文件详解

    一 Nginx简介 Nginx是一款开源代码的高性能HTTP服务器和反向代理服务器 同时支持IMAP POP3 SMTP代理服务 1 Nginx工作原理 Nginx由内核和模块组成 完成工作是通过查找配置文件将客户端请求映射到一个locat
  • TCP 几个字段含义

    1 tcp out of order tcp有问题 2 tcp segment of a reassembled PDU 3 Tcp previous segment lost tcp先前的分片丢失 4 Tcp acked lost seg
  • 双指针简化双for循环系列(一)27.移除元素

    https leetcode cn com problems remove element class Solution public int removeElement int nums int val 快慢指针 int fastInde