首页 > 代码库 > Leetcode 142. Linked List Cycle IIJAVA语言
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语言
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。