Leetcode 142. Linked List Cycle IIJAVA语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 142. Linked List Cycle IIJAVA语言相关的知识,希望对你有一定的参考价值。
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list.
题意:不破坏原链表的情况下判断有没有环,,,,,,
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode detectCycle(ListNode head) { /////不让修改原来的结构。本来还想用断链法. if(head==null || head.next==null ||head.next.next==null)return null; ListNode fast=head.next.next; ListNode slow=head.next; ///判断有没有环。找到相遇点 while(fast!=slow){ if(fast.next!=null && fast.next.next!=null){ fast=fast.next.next; slow=slow.next; }else{ return null; } } fast=head; while(fast!=slow){ fast=fast.next; slow=slow.next; } return fast; } }
PS:依然是快慢指针。先让fast走两步和slow走一步,判断有没有环先,有环的话就会相遇。当他们相遇后,让fast回到头,此时走一步。直到和slow相遇。则此时的相遇点位环入口!!!!!详情见https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4
里面有一段推导
以上是关于Leetcode 142. Linked List Cycle IIJAVA语言的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode-142-Linked List Cycle II
LeetCode 141, 142. Linked List Cycle I+II
leetcode-142. Linked List Cycle II
LeetCode142. Linked List Cycle II