一、快慢指针: leedcode 142. 环形链表 II 快慢指针的思想是设置慢指针slow和快指针fast,slow每次走一步,fast每次走两步,如果有环fast指针和slow指针必然相遇,相遇时 定义新的指针p从head开始和slow从当前位置起每次都走一步,直到相遇,相遇的位置就是环的入口 ...
分类:
编程语言 时间:
2020-02-02 22:02:24
阅读次数:
127
一、题目描述 输入一个链表,输出该链表中倒数第k个结点。 二、思路 思路一: 设置两个指针,一个快指针,一个慢指针。 慢指针在第一个节点,快指针先前进k个结点。然后快慢指针一起前进,当快指针到达终点时,慢指针所指结点为倒数第k个结点。 思路二: 先遍历一遍链表,得出链表长度count。然后从头开始前 ...
分类:
其他好文 时间:
2020-01-28 12:19:40
阅读次数:
58
链表又来了,可见ListNode 这个数据结构出现之频繁。 本题求解链表中是否存在环路,让我去看看题解怎么区分环路。 盲猜双指针法 两种方法: 1.set,比用List快很多 2.快慢指针 知识点: 1.链表中假定所有元素都不重复,所以只要出现重复元素就说明有循环 空间复杂度>O(1) 1.因为 之 ...
分类:
其他好文 时间:
2020-01-26 17:36:01
阅读次数:
59
链表: 快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步) 应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等 判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环 判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然 ...
分类:
编程语言 时间:
2020-01-23 18:22:22
阅读次数:
85
前言 上文 我们详细地学习了链表的基本概念,优缺点,也带大家一步步由浅入深地学习了链表的翻转技巧,这一篇我们来看看链表的另一个解题技巧:快慢指针。 快慢指针在面试中出现的概率也很大,也是务必要掌握的一个要点,本文总结了市面上常见的快慢指针解题技巧,相信看完后此类问题能手到擒来。本文将详细讲述如何用快 ...
分类:
其他好文 时间:
2020-01-04 22:35:31
阅读次数:
114
一、在O(1)的空间复杂度内判断单链表是否有环 "题目描述" 快慢指针:若链表有环,则两指针必在将来某一时刻相遇: 假设环的长度为$L$,快指针距离环的入口距离为$S$,慢指针在入口,则经过$t$时间相遇,有: $S+2t t=nL$,即:$S+t=nL$,又$Snext) { fast = fas ...
分类:
其他好文 时间:
2020-01-01 23:36:42
阅读次数:
67
题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 分析: 利用快慢指针,如果链表中存在环的话,则快指针一定在环中的某个节点与慢指针相遇。 设头节点到链表的环的入口结点的结点个数为p,入口结点到两指针相遇结点的结点个数为a,相遇结点到入口结点的结点个数为b。 快指针每 ...
分类:
编程语言 时间:
2019-12-26 11:26:04
阅读次数:
87
题目:输入一个链表,输出该链表中倒数第k个结点。 这道题可以用快慢指针做,先让first指针走k步,然后first和second指针一起走,直到first指针走到空,这时候second指针就指向倒数第k个结点。 c++代码如下: ...
分类:
其他好文 时间:
2019-12-21 21:01:42
阅读次数:
85
环形链表入口节点 题目描述 思路分析:判断是否有环 本题是 判断环形链表是否有环 的进阶题目。 环形链表题目利用了 双指针技巧 ,设置快慢两个指针,每次快指针走两步慢指针走一步。假如链表有环,那么快慢指针在环的部分终究会相遇。 判断链表是否有环,比较简单直接上代码。 思路分析:如何找出入口节点? 方 ...
分类:
其他好文 时间:
2019-12-18 15:12:00
阅读次数:
86