美文网首页
第1.1节 双指针技术

第1.1节 双指针技术

作者: 比特阳 | 来源:发表于2017-03-08 14:41 被阅读0次

创建于:20170308
原文链接:https://leetcode.com/articles/two-pointer-technique/

1 双指针分两种:

  • 一个慢指针,一个快指针
  • 一个头指针,一个尾指针

2 一个字符串翻转的例子

2.1 直接方法

public void reverse(char[] str) {
    int n = str.length;
    for (int i = 0; i < n / 2; i++) {
        swap(str, i, n - i - 1);
    }
}

该方法,从头开始交换,但需要考虑中间位置n/2。如果没有理解清楚,跑过了,则会得到错误的结果。
为什么n/2,恰好就是正确的呢?无论是奇数长度还是偶数长度。拿个实际例子测一下:

0 1 2 3 4  #长度为5,是奇数列。5/2下取整=2,恰好是中间下标。因此n/2位置不需要进行swap
0 1 2 3   #长度为4,是偶数列。4/2下取整=2,恰好是后一半的起点。因此n/2位置不需要进行swap

因此也可以记住这个结论,当然记不住也没关系,像上面这样“推导”一下也就知道了。

2.2 双指针方法

public void reverse(char[] str) {
    int i = 0, j = str.length - 1;
    while (i < j) {
        swap(str, i, j);
        i++;
        j--;
    }
}

i是头指针0
j是尾指针len-1
如果数组n是奇数,则

相关文章

  • 第1.1节 双指针技术

    创建于:20170308原文链接:https://leetcode.com/articles/two-pointe...

  • ZXAlgorithm - C7 Two Pointers

    Outline相向双指针同向双指针 Two SumPartitionSort 0 Templete 同向双指针,相...

  • 双指针:15.三数之和

    考点:双指针 使用双指针搜索之前排序 动态循环双指针m,n

  • 算法学习--双指针

    双指针分类 快慢指针 左右指针 快慢指针:主要解决链表相关问题,比如:典型的判断链表中是否包含环、链表倒是第K个节...

  • Python算法-双指针(Two Pointers)

    双指针分为「对撞指针」、「快慢指针」、「分离双指针」。 参考来源:https://algo.itcharge.cn...

  • 第 2 天 双指针

    977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组...

  • 双指针法(Swift代码篇)

    双指针法有三种: 左右指针法(头尾指针法) 快慢指针法 滑动窗口 左右指针法 左右指针法是最常见的双指针法,左右两...

  • 数组

    二分法,快排序,归并28327268088215对撞指针12534434511双索引技术,滑动窗口209343876

  • 双指针

    双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。双指针可以从不同的方向向中间逼近也可以朝着同一个...

  • 双指针

    颜色分类,最令我头疼的一个双指针问题... 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排...

网友评论

      本文标题:第1.1节 双指针技术

      本文链接:https://www.haomeiwen.com/subject/ywubgttx.html