本篇博客旨在总结双指针法在剑指offer链表题中的应用 包括删除链表中重复的节点、链表中倒数第k个节点、链表中环的入口节点、反转链表、合并两个排序的链表、两个链表的第一个公共节点。 根据双指针的类型,可以大致分为三种: 第一种是间隔一定距离的双指针法,包括删除链表中重复的节点、链表中倒数第k个节点两 ...
分类:
其他好文 时间:
2020-03-04 22:43:21
阅读次数:
80
此题设快慢两个指针,先判断是否有环:如果为环快慢指针终会相遇; 找入口节点:快慢指针相遇的节点到入口节点的距离,与从头节点开始新的慢指针到相遇点的距离相同。 可画图演示。因为快指针是慢指针的两倍速,且他们在q点相遇,则我们可以得到等式 2(A+B) = A+B+C+B.得出C=A function ...
分类:
其他好文 时间:
2020-03-03 10:54:48
阅读次数:
61
参考“yu wang”的博客:https://blog.csdn.net/ShanXi_wangyu/article/details/100542137 参考“Tom Hardy”的博客:https://blog.csdn.net/qq_29462849/article/details/904005 ...
分类:
编程语言 时间:
2020-02-16 14:41:05
阅读次数:
60
一、快慢指针: leedcode 142. 环形链表 II 快慢指针的思想是设置慢指针slow和快指针fast,slow每次走一步,fast每次走两步,如果有环fast指针和slow指针必然相遇,相遇时 定义新的指针p从head开始和slow从当前位置起每次都走一步,直到相遇,相遇的位置就是环的入口 ...
分类:
编程语言 时间:
2020-02-02 22:02:24
阅读次数:
127
面试题23:链表中环的入口节点 问题描述 一个链表中包含环,如何找出环的入口结点?例如,在图中的链表中,环的入口结点是结点3。 链表的结构 问题分析 首先不能忽略链表中不包含环的情况,第一件事情必须先确定链表是否有环:我们可以使用两个引用,一个跑的快、一个跑的慢,同时出发,跑的快的追上跑的慢的自然说 ...
分类:
其他好文 时间:
2020-01-31 21:06:48
阅读次数:
75
链表: 快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步) 应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等 判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环 判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然 ...
分类:
编程语言 时间:
2020-01-23 18:22:22
阅读次数:
85
1、题目描述: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 2、思路:这道题因为题目中说了链表不一定有环,那么我们首先就是要判断这个链表是否有环,判断有环的方法就是定义两个指针,第一个指针一次走一步,第二个指针一次走两步。因为有环的存在,这两个指针一定会相遇,记下此时 ...
分类:
其他好文 时间:
2020-01-21 21:58:40
阅读次数:
85
剑指OFFER 链表中环的入口结点 如果出现了环,说明存在后面的结点指向前面的结点,如果对此链表进行遍历,那么最终会遍历到之前已经访问过的元素.于是我使用map来记录前面所有结点被访问的次数,如果首次访问到了访问次数不等于0的结点(之前被访问过的结点),说明找到了环的入口结点. 思考: 为什么用ma ...
分类:
其他好文 时间:
2020-01-15 13:44:23
阅读次数:
60
一、在O(1)的空间复杂度内判断单链表是否有环 "题目描述" 快慢指针:若链表有环,则两指针必在将来某一时刻相遇: 假设环的长度为$L$,快指针距离环的入口距离为$S$,慢指针在入口,则经过$t$时间相遇,有: $S+2t t=nL$,即:$S+t=nL$,又$Snext) { fast = fas ...
分类:
其他好文 时间:
2020-01-01 23:36:42
阅读次数:
67
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* EntryNodeOfLoop ...
分类:
其他好文 时间:
2020-01-01 21:05:30
阅读次数:
104