https://leetcode.com/problems/intersection-of-two-linked-lists Easy

Решение

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */
fun getIntersectionNode(headA: ListNode?, headB: ListNode?): ListNode? {
    var aPointer = headA
    var bPointer = headB
    
    // Если один из списков достигает конца, перескакиваем на другой список
    while (aPointer != bPointer) {
        aPointer = if (aPointer == null) headB else aPointer.next
        bPointer = if (bPointer == null) headA else bPointer.next
    }
    
    // Когда они совпадают, это точка пересечения (или null)
    return aPointer
}