각 linked-list를 순회하면서, pointerA, pointerB가 지정하는 곳이 같으면 그pointer을 return한다.
var getIntersectionNode = function(headA, headB) {
if (!headA || !headB) return null;
// 포인터를 정해준다.
let pointer1 = headA;
let pointer2 = headB;
while (pointer1 !== pointer2) {
pointer1 = pointer1.next;
pointer2 = pointer2.next;
if (pointer1 === pointer2) {
return pointer1;
// 두 linked-list가 이어져있지 않을 때에도,
// pointer1, pointer2가 둘 다 null을 가리키면 null을 반환하니까 맞음
}
if (!pointer1) {
pointer1 = headB;
}
if (!pointer2) {
pointer2 = headA;
}
}
return pointer1;
};
TODO - 이 방법은 왜 안될까? 해결해야 함.
linked-listA, B의 첫 번째 교차 점을 찾아내는 것임.
두 대의 linked-list를 거꾸로 돌린 후, node.next가 다른 지점의 node.val을 찾으면 될 듯.