快慢指针遍历 —— 141_环形链表

1. 141_环形链表
/*
给定一个链表,判断链表中是否有环。
*/
/**
 * 哈希表 o(n)
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        Set<ListNode> nodesSeen = new HashSet<>();
        while (head != null) {
            if (nodesSeen.contains(head)) {
                return true;
            } else {
                nodesSeen.add(head);
            }
            head = head.next;
        }
        return false;
    }
}
/*
 * 快慢指针
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null || head.next == null) return false;
        ListNode fast = head, slow = head;
        while(fast != null && fast.next != null){
            fast = fast.next.next;
            slow = slow.next;
            if(fast == slow) return true;
        }
        return false;
    }
}
posted @ 2020-09-26 19:34  SSunSShine  阅读(51)  评论(0编辑  收藏  举报