import UIKit
class ListNode
{
var val:Int
var next:ListNode?
init( val:Int )
{
self.val = val
self.next = nil
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func hasCycle(head1:ListNode?,head2:ListNode?) -> ListNode? {
var lenOne = callen(head: head1)
var lenTwo = callen(head: head2)
var fast = lenOne > lenTwo ? head1 : head2
var slow = lenOne < lenTwo ? head2 : head1
var n = abs(lenOne - lenTwo);
while n != 0 {
n = n-1
fast = fast?.next
}
while fast != nil {
if fast?.val == slow?.val {
return fast
}
fast = fast?.next
slow = slow?.next
}
return nil
}
func callen(head:ListNode?) -> Int {
var len = 0 , node = head
while node != nil {
len = len + 1
node = node!.next;
}
return len
}
}
05-27