141.环形链表

一、哈希表

public class ListNode {
    public var val: Int
    public var next: ListNode?
    public init(_ val: Int) {
        self.val = val
        self.next = nil
    }
}

class Solution {
    func hasCycle(_ head: ListNode?) -> Bool {
        //方法1. 一次遍历,使用HashMap的方法存储这个点之前出现过没有
        //时间复杂度O(N),控件复杂度O(1)
        //边界条件
        guard var head = head else {
            return false
        }
        var haveSeen = Set<ListNode>()
        while head.next != nil {
            if !haveSeen.add(head) {
                return true
            }
            head = head.next!
        }
        return false
    }
}

二、快慢指针

class Solution {
    func hasCycle(_ head: ListNode?) -> Bool {
        var slowNode = head
        var fastNode = head?.next
        while fastNode?.next != nil {
            if slowNode === fastNode {
                return true
            }
            slowNode = slowNode?.next
            fastNode = fastNode?.next?.next
        }
        
        return false
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(...
    大龄码农的技术点滴阅读 1,418评论 0 0
  • 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索...
    genggejianyi阅读 1,792评论 0 0
  • 给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索...
    衣锦昼行阅读 1,684评论 0 0
  • 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(...
    Jay丶x阅读 1,211评论 0 0
  • https://leetcode-cn.com/problems/linked-list-cycle/[https...
    yaoqi7777阅读 1,184评论 0 0

友情链接更多精彩内容