思路:
这道题就是判断链表中是否有环,首先使用集合肯定可以快速地解决,比如通过一个set集合遍历,如果遍历过程中有节点在set中已经存在那么说明存在环。
第二种方式就是通过快慢指针方式寻找环。具体思路就是一个慢指针每次直走一步,一个快指针每次都两步,如果有环,那么快指针早晚会追上慢指针,如果没有环,那么到快慢指针为null的时候,就退出了。代码如下:
public class Solution {public static boolean hasCycle(ListNode head) {if (head==null||head.next==null){return false;}ListNode slow=head;ListNode fast=head.next;while (fast.next != null && fast.next.next != null){if (slow==fast){return true;}slow=slow.next;fast=fast.next.next;}return false;}
}