一、快慢指针: 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
``` class Node: def __init__(self,value=None): self.value = value self.next = None class LinkList: def __init__(self,head = None): self.head = head de... ...
分类:
编程语言 时间:
2020-01-31 01:05:13
阅读次数:
112
链表: 快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步) 应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等 判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环 判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然 ...
分类:
编程语言 时间:
2020-01-23 18:22:22
阅读次数:
85
1、题目描述: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 2、思路:这道题因为题目中说了链表不一定有环,那么我们首先就是要判断这个链表是否有环,判断有环的方法就是定义两个指针,第一个指针一次走一步,第二个指针一次走两步。因为有环的存在,这两个指针一定会相遇,记下此时 ...
分类:
其他好文 时间:
2020-01-21 21:58:40
阅读次数:
85
一、在O(1)的空间复杂度内判断单链表是否有环 "题目描述" 快慢指针:若链表有环,则两指针必在将来某一时刻相遇: 假设环的长度为$L$,快指针距离环的入口距离为$S$,慢指针在入口,则经过$t$时间相遇,有: $S+2t t=nL$,即:$S+t=nL$,又$Snext) { fast = fas ...
分类:
其他好文 时间:
2020-01-01 23:36:42
阅读次数:
67
环形链表入口节点 题目描述 思路分析:判断是否有环 本题是 判断环形链表是否有环 的进阶题目。 环形链表题目利用了 双指针技巧 ,设置快慢两个指针,每次快指针走两步慢指针走一步。假如链表有环,那么快慢指针在环的部分终究会相遇。 判断链表是否有环,比较简单直接上代码。 思路分析:如何找出入口节点? 方 ...
分类:
其他好文 时间:
2019-12-18 15:12:00
阅读次数:
86
本篇主要是单向链表题型的实战,比如反转单向链表、查找单向链表的中间节点、判断一个链表是否有环、合并两个有序链表、判断一个单向链表是否是回文链表。 ...
分类:
其他好文 时间:
2019-12-16 19:27:28
阅读次数:
76
问题描述 怎么能够更高效地判断一个链表是否有环呀? 首先创建两个指针p1和p2(在Java里就是两个对象引用),让它们同时指向这个链表的头节点。 然后开始一个大循环,在循环体中,让指针p1每次向后移动1个节点,让指针p2每次向后移动2个节点,然后比较两个指针指向的节点是否相同。如果相同,则可以判断出 ...
分类:
其他好文 时间:
2019-12-07 21:28:10
阅读次数:
96
用两个指针fast和slow指针(快慢指针),开始的时候指针都指向链表的Head节点,然后在每一步的操作中slow向前走一步:slow = slow.Next,而fast就向前走两步 :fast = fast.Next.Next;快指针fast由于比慢指针slow快,所以fast一定比slow先进入 ...
分类:
其他好文 时间:
2019-10-21 11:52:19
阅读次数:
80