LeetCode141:Given a linked list, determine if it has a cycle in it.

来源:互联网 发布:催眠的电影 知乎 编辑:程序博客网 时间:2024/06/10 02:17

LeetCode141:Given a linked list, determine if it has a cycle in it. 

给定链表,判断是否存在环

1、该题的思路,如果使用额外空间,解决就很容易。我们用map存储每个节点引用,如果该引用的值大于1,就说明在该位置存在环。

public boolean hasCycle(ListNode head){if (head == null)return true;if (head.next == null && head.next == head)return false;Map<ListNode, Integer> map = new HashMap<ListNode, Integer>();ListNode p = head;while (p != null){if (map.containsKey(p)&&map.get(p) == 1)return true;map.put(p, 1);p = p.next;}return false;}

同样可以用该方法返回环存在的位置

public ListNode detectCycle(ListNode head){if (head == null)return null;if (head.next == null && head.next == head)return head;Map<ListNode, Integer> map = new HashMap<ListNode, Integer>();ListNode p = head;while (p != null){if (map.containsKey(p) && map.get(p) == 1)return p;map.put(p, 1);p = p.next;}return null;}


0 0
原创粉丝点击