判断是否有环
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9?tab=note
双步长
循环必相遇
后面还有一个寻找环的入口
当两个相遇时 把一个指针放回头结点,两个指针都每次走一步
相遇时即为环入口
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public boolean hasCycle(ListNode head) { if (head == null){ return false; } ListNode fast = head; ListNode slow = head; while(fast!=null && fast.next!=null){ slow = slow.next; fast = fast.next.next; if(fast == slow){ return true; } } return false; } }
面试题解 文章被收录于专栏
面试题解