码迷,mamicode.com
首页 > 其他好文 > 详细

Linked List Cycle Leetcode

时间:2017-01-19 12:55:39      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:div   turn   logs   contain   hash   contains   etc   boolean   als   

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

Follow up:
Can you solve it without using extra space?

 

这道题很简单也很经典感觉。一开始用hashset做的,但这样就用了extra space了。后来发现可以用双指针。

hashset

public class Solution {
    public boolean hasCycle(ListNode head) {
        if (head == null) {
            return false;
        }
        Set<ListNode> hs = new HashSet<>();
        while (true) {
            if (head == null) {
                return false;
            }
            if (hs.contains(head)) {
                break;
            }
            hs.add(head);
            head = head.next;
        }
        return true;
    }
}

双指针

public class Solution {
    public boolean hasCycle(ListNode head) {
        if (head == null) {
            return false;
        }
        ListNode fast = head;
        ListNode slow = head;
        while (fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
            if (fast == slow) {
                return true;
            }
            if (fast == null) {
                break;
            }
        }
        return false;
    }
}

双指针是公认的解法,这次都忘记了,下次要记住。。。

Linked List Cycle Leetcode

标签:div   turn   logs   contain   hash   contains   etc   boolean   als   

原文地址:http://www.cnblogs.com/aprilyang/p/6305823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!