题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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
}
}

查看5道真题和解析