题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
//借鉴了一位网友很妙的思想,利用走“对方”的链表,弥补链表长度的差值,我这里只是补上无公共节点的边界情况,代码就完美了 /** * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int = 0, _ next: ListNode? = nil) { * self.val = val * self.next = next * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */ func FindFirstCommonNode ( _ pHead1: ListNode?, _ pHead2: ListNode?) -> ListNode? { // write code here if pHead1 == nil || pHead2 == nil { return nil } var p1 = pHead1 var p2 = pHead2 while p1?.val != p2?.val { if p1?.next == nil && p2?.next == nil { return nil } p1 = p1?.next == nil ? pHead2 : p1?.next p2 = p2?.next == nil ? pHead1 : p2?.next } return p1 } }