关于门户网站建设通报,fuzzz的wordpress模板,上海电商网站设计,梅州南站给定一个链表#xff0c;返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环#xff0c;则返回 null。 为了表示给定链表中的环#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置#xff08;索引… 给定一个链表返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环则返回 null。 为了表示给定链表中的环我们使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。 如果 pos 是 -1则在该链表中没有环。注意pos 仅仅是用于标识环的情况并不会作为参数传递到函数中。 以前做题的时候也是关于这种类型的题觉得很不错想和大家分享一波 好言归正传我们来开始这道题的分析 这种类型题技巧性也是非常强的只有出现环形这种字眼一般都是声明两个指针一个快、一个慢不断走的过程中这两个点终会相遇就好比操场跑步现在来设置一个情景题 有一点小渣和老渣去跑步老渣可是出了名的时间管理大师因为这身体一直不好所以老渣跑步的速度一直比小渣慢两个同时从起点出发最后小渣和老渣在操场中再一次相遇 因为老渣因为某种原因身体每况愈下但是正因为操场是一个环状所以两个还能再次相遇
所以我们可以先通过这个环状的特点去找到该链表快慢指针第一次相遇的地方 ListNode fasthead;ListNode slowhead;while(fast!nullfast.next!null){fastfast.next.next;slowslow.next;if(fastslow){break;}}
我们再来研究研究怎么去找环形的入口 所以我们就可以写出代码 public ListNode detectCycle(ListNode head) {ListNode fasthead;ListNode slowhead;while(fast!nullfast.next!null){fastfast.next.next;slowslow.next;if(fastslow){break;}}if(fastnull||fast.nextnull){return null;}slowhead;while(slow!fast){slowslow.next;fastfast.next;}return slow;}