题目链接:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路: //左神讲的 //先说个定理:两个指针一个fast、一个slow同时从一个链表的头部出发 //fast一次走2步,slow一次走一步,如果该链表有环,两个指针必然在环内相遇 //此时只需要把其中的一个指 ...
分类:
其他好文 时间:
2019-05-20 21:10:36
阅读次数:
150
题目描述给一个链表,若其中包含环,请找出该链表的环的入口节点,否则,输出null。#-*-coding:utf-8-*-#@Time:2019-04-2322:40#@Author:JayceWong#@ProjectName:job#@FileName:entryNodeOfLoop.py#@Blog:https://blog.51cto.com/jayce1111#@Github:https:/
分类:
其他好文 时间:
2019-04-24 00:16:56
阅读次数:
109
第一步:检测链表是否有环。 方法还是比较多的,这里先讲一个:快慢指针。 快慢指针的方法,就是让两个指针同时指向链表。在向后遍历的时候,一个指针每次走两步,称为快指针;一个指针每次走一步,称为慢指针。如果快慢指针相遇,则说明链表有环,否则无环。(后面证明。) 代码实现如下 第二步:找到环的入口。 先画 ...
分类:
其他好文 时间:
2019-04-19 18:03:47
阅读次数:
164
弄懂了思路: 首先判断是否为环:快慢指针,快是慢的两倍,如果相遇则有环;此时两个指针走的路程差就是环的长度或长度的n倍; 头到入口:a;环长度:b;相遇点到入口:c; 则 2*(a+b-c) = a+b+b-c; 得a=c; 即头到入口=相遇点到入口。 将快指针指向头,相同速度移动,遇到即为入口结点 ...
分类:
其他好文 时间:
2019-03-11 13:26:49
阅读次数:
128
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 /* 时间复杂度为O(n),两个指针,一个在前面,另一个紧邻着这个指针,在后面。 两个指针同时向前移动,每移动一次,前面的指针的next指向NULL。 也就是说:访问过的节点都断开,最后到达的那个节点一定是尾节点的 ...
分类:
其他好文 时间:
2019-03-11 00:44:26
阅读次数:
180
"链表中环的入口结点" 题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 第一步两个节点, 一快一慢, 若有环则相遇 当快慢节点相遇时, 慢结点走了x个节点, 快结点恰巧走了2x个节点, 2x = k n + x, k为1, 2,..., 此时令其中一个节点等于头 ...
分类:
其他好文 时间:
2019-03-10 12:27:01
阅读次数:
167
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 题目解答 /* public class ListNode { int val; ListNode next = null; ListNo ...
分类:
其他好文 时间:
2019-01-15 15:49:32
阅读次数:
154
题目描述 一个链表中包含环,请找出该链表的环的入口结点。 第一步,找环中相汇点。分别用p1,p2指向链表头部,p1每次走一步,p2每次走二步,直到p1==p2找到在环中的相汇点。 第二步,找环的入口。接上步,当p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1 ...
分类:
其他好文 时间:
2018-10-11 18:52:09
阅读次数:
112
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode EntryNode... ...
分类:
其他好文 时间:
2018-10-07 13:02:33
阅读次数:
181