玩转双指针
Posted 小猴子_X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转双指针相关的知识,希望对你有一定的参考价值。
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 常见的双指针有三种。
- 左右指针:两个指针指向同一数组,但是遍历方向相反,常用作搜索排序数组的两个符合条件的数,以及其他特殊情况。
- 快慢指针:两个指针指向同一数组,遍历方向相同,fast指针快,slow慢。然后它俩同时向前移动,初始的时候相隔一定的距离,这个距离一般由题意选择。用在特殊链表。
- 滑动窗口:两个指针指向同一数组,遍历方向相同且不会相交(两个指针包围的区域即为当前的窗口),经常用于区间搜索。
一.左右指针
搜索排序数组(基础版):
搜索排序数组(升级版):
其他场景:
二.快慢指针
链表倒数第k个节点:快指针先走n步,然后和慢指针每次移动1位
其他方法:遍历所有节点,求第count - k个节点;反转链表;放入栈中;
环形链表:快指针和慢指针在同一个位置,但是快指针每次移动2步,慢指针每次移动1位
模拟的环形链表
回文链表:其他方法:把链表遍历放在一个数组中,使用左右指针比较。缺点:空间复杂度O(n)
三.滑动窗口
正向滑动窗口
反向滑动窗口
特殊滑动窗口:需要的元素不是窗口内的元素,而是窗口的左右边界
寄语:读一些无用的书,做一些无用的事,花一些无用的时间,都是为了在一切已知之外,保留一个超越自己的机会。
以上是关于玩转双指针的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 11gR2 RAC 单网卡转双网卡绑定配置步骤