leetcode: 160. Intersection of Two Linked Lists

kldaji·2022년 6월 9일
0

leetcode

목록 보기
23/56

problem

with knowing length

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */

class Solution {
    fun getIntersectionNode(headA:ListNode?, headB:ListNode?):ListNode? {
        var _headA = headA
        var _headB = headB
        var lenA = 0
        var lenB = 0
        while (_headA != null) {
            lenA++
            _headA = _headA?.next
        }
        while (_headB != null) {
            lenB++
            _headB = _headB?.next
        }
        
        _headA = headA
        _headB = headB        
        while (_headA != _headB) {
            if (lenA > lenB) {
                lenA--
                _headA = _headA?.next                
            } else if (lenA < lenB) {
                lenB--
                _headB = _headB?.next
            } else {
                _headA = _headA?.next
                _headB = _headB?.next
            }
        }
        return _headA
    }
}

without knowing length

/**
 * Example:
 * var li = ListNode(5)
 * var v = li.`val`
 * Definition for singly-linked list.
 * class ListNode(var `val`: Int) {
 *     var next: ListNode? = null
 * }
 */

class Solution {
    fun getIntersectionNode(headA:ListNode?, headB:ListNode?):ListNode? {
        var _headA = headA
        var _headB = headB
        
        while (_headA != _headB) {
            _headA = if (_headA == null) headB else _headA?.next
            _headB = if (_headB == null) headA else _headB?.next
        }
        return _headA
    }
}
profile
다양한 관점에서 다양한 방법으로 문제 해결을 지향하는 안드로이드 개발자 입니다.

0개의 댓글