142_环形链表II
142_环形链表II
package 链表; import java.util.HashSet; import java.util.Set; /** * https://leetcode-cn.com/problems/linked-list-cycle-ii/ * @author Huangyujun * */ public class _142_环形链表II { //方法一:使用不重复的HashSet 集合 public ListNode detectCycle(ListNode head) { ListNode pos = head; Set<ListNode> visited = new HashSet<ListNode>(); while (pos != null) { if (visited.contains(pos)) { return pos; } else { visited.add(pos); } pos = pos.next; } return null; } //快慢指针法(只快一步噢) public ListNode detectCycle2(ListNode head) { if (head == null) { return null; } ListNode slow = head, fast = head; while (fast != null) { slow = slow.next; if (fast.next != null) { fast = fast.next.next; } else { return null; } if (fast == slow) { ListNode ptr = head; while (ptr != slow) { ptr = ptr.next; slow = slow.next; } return ptr; } } return null; } }
本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15708883.html