zoukankan      html  css  js  c++  java
  • LeetCode相交链表Swift

    编写一个程序,找到两个单链表相交的起始节点。

    如下面的两个链表:

    示例 1:

      

    输出:2

    示例 2:

     

    输出:null

    注意:

    如果两个链表没有交点,返回 null.
    在返回结果后,两个链表仍须保持原有的结构。
    可假定整个链表结构中没有循环。
    程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

    思路:

    A链表:链表A + 链表B  09124324

    B链表:链表B + 链表A  32409124

    路程相同,速度相同,如果有交点,最后肯定相遇走相同的路,上面最后的24就是相同的路

    /**
     * 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 getIntersectionNode(_ headA: ListNode?, _ headB: ListNode?) -> ListNode? {
            var currentA = headA
            var currentB = headB
            while currentA !== currentB {
                if currentA?.next == nil && currentB?.next == nil {
                    return nil
                }
                currentA = (currentA?.next == nil) ? headB : currentA?.next
                currentB = (currentB?.next == nil) ? headA : currentB?.next
            }
            return currentA
        }
    }
  • 相关阅读:
    HTML学习基础(一)
    初识C#
    SQL小知识
    jQuery(四)
    jQuery(三)
    认识jQuery(二)
    认识Jquery
    初识Javascript
    初识HTML
    博客,你好!
  • 原文地址:https://www.cnblogs.com/huangzs/p/14155716.html
Copyright © 2011-2022 走看看