19.LeetCode刷题For Swift·141.判断链表是

2021-01-07  本文已影响0人  富城

1、原题

给定一个链表,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

如果链表中存在环,则返回 true 。 否则,返回 false 。

进阶:

你能用 O(1)(即,常量)内存解决此问题吗?

2、思路

1、经典的使用双指针方法,

3、代码

/**
 * Definition for singly-linked list.
 * 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 {
        var l1 = head
        var l2 = head?.next
        while l1 != nil && l2 != nil {
            if l1 === l2 {
                return true
            }
            l1 = l1?.next
            l2 = l2?.next?.next
        }
        return false
    }
}
上一篇 下一篇

猜你喜欢

热点阅读