Swift 环形链表- LeetCode

作者: 韦弦Zhy | 来源:发表于2018-11-27 17:44 被阅读45次
    LeetCode

    题目: 环形链表

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

    进阶
    你能否不使用额外空间解决此题?

    方案:

    可以转化为一个追击问题
    前后双指针,slow走一步,fast走两步,如果有环存在,一定会相遇的。

    代码:
    /**
     * 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 {
        if (head? == nil || head?.next == nil) {
          return false          
        }
        var slow = head?
        var fast = head?.next
        while(slow != fast) {
          if (fast ==  nil || fast.next == nil) {
             return false        
          }
          slow = slow.next
          fast = fast.next.next
        }
        return true
      }
    }
    

    相关文章

      网友评论

        本文标题:Swift 环形链表- LeetCode

        本文链接:https://www.haomeiwen.com/subject/ctknqqtx.html