如何判断单链表是否是循环链表
参考回答:
空间复杂度:O(1)
两个指针,一个每次走一步,一个每次走两步,如果有环,两者会相遇。相遇后,让一个指针从头结点再次出发,两个指针每次都走一步,直到相遇点即为环入口。
public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead){ ListNode left = pHead; ListNode right = pHead; while(right!=null && right.next!=null){ left = left.next; right = right.next.next; if(left==right) break; } if(right==null || right.next == null){ return null; } left = pHead; while(left!=right){ right = right.next; left = left.next; } return left; } }