Swift 环形链表- LeetCode

《Swift 环形链表- LeetCode》 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中开始做初级算法这一章节,将做的题目在此做个笔记,希望有更好方法同学们cue我哦。
    原文作者:韦弦Zhy
    原文地址: https://www.jianshu.com/p/e7000c310cdc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞