双指针题解

作者: ML李嘉图

移除元素

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

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

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

示例 1: 给定 nums = [3,2,2,3],

​ val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

删除过程如下:

双指针法(快慢指针法)在数组和链表的操作中是非常常见的,很多考察数组、链表、字符串等操作的面试题,都使用双指针法。

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://www.cnblogs.com/zwtblog/p/15253844.html https://www.cnblogs.com/zwtblog/p/15253324.html https://www.cnblogs.com/zwtblog/p/15253126.html

大概有这么写类型:
1.移除元素
2.反转字符串

其他语言版本
3.替换空格
4.翻转字符串里的单词
5.翻转链表
6.删除链表的倒数第N个节点
7.链表相交
8.环形链表
9.三数之和
10.四数之和

原文创作:ML李嘉图

原文链接:https://www.cnblogs.com/zwtblog/p/15253869.html

文章列表

更多推荐

更多
  • Spark编程指南文档-在Mesos上运行Spark Spark 可以运行在 Apache Mesos 管理的硬件集群上。使用 Mesos 部署 Spark 的优点包括:Spark 与其他的 frameworks(框架) 之间的 dynamic partitioning(动态分区),...
  • Spark编程指南文档-Spark 调优 由于大多数Spark计算都在内存中,所以集群中的任何资源(CPU、网络带宽或内存)都可能成为Spark程序的瓶颈。在内存使用时进行调优,有三个考虑因素:GC优化,当你的程序存储了大量的 RDD ...
  • Spark编程指南文档-快速入门 本教程提供了如何使用 Spark 的快速入门介绍。首先通过运行 Spark 交互式的 shell(在 Python 或 Scala 中)来介绍 API,然后展示如何使用 Java,Scala 和 Python 来编写应用程序。Spark ...
  • Spark编程指南文档-Spark 安全 Spark 当前支持使用 shared secret(共享密钥)来 authentication(认证)。可以通过配置 spark.authenticate 参数来开启认证。这个参数用来控制 Spark ...
  • Spark编程指南文档-Spark 官方文档中文版翻译进度 Apache Spark 2.2.0 官方文档中文版翻译进度,| 是否完成 | 完成百分比 | 任务名称 | Markdown | 工期 | 开始时间 | 结束时间 | 贡献者 | 备注
  • Spark编程指南文档-20 k 属性](spark-properties) 控制着大多数应用参数,并且可以通过使用一个 [SparkConf](api/scala/index.html#org.apache.spark.SparkConf) 对象来设置,或者通过
  • Spark编程指南文档-Monitoring and Instrumentation xt 都会启动一个 Web UI,默认端口为 4040,显示有关应用程序的有用信息。这包括: * 调度器阶段和任务的列表 * RDD 大小和内存使用的概要信息 * 环境信息 * 正在运行的执行器的信息 您可以通过在
  • Spark编程指南文档-结构化流式编程指南 Spark SQL引擎将负责增量地、连续地运行它,并在流数据不断到达时更新最终结果。你可以使用 `Scala`、`Java`、`Python`或`R`中的[Dataset/DataFrame API](sql-programming-g
  • Spark编程指南文档-Spark RDD(Resilient Distributed Datasets)论文 的概念。当前的很多框架对迭代式算法场景与交互性数据挖掘场景的处理性能非常差,这个是 RDDs 的提出的动机。如果能将数据保存在内存中,将会使的上面两种场景的性能提高一个数量级。为了能达到高效的容错,RDDs 提供了一种受限制的共享内存
  • Spark编程指南文档-Spark Standalone模式 Spark 除了运行在 Mesos 或者 YARN 上以外,Spark 还提供了一个简单的 standalone 部署模式。安装 Spark Standalone 集群,您只需要将编译好的版本部署在集群中的每个节点上。您可以启动一个 ...
  • 近期文章

    更多
    文章目录

      推荐作者

      更多