https://leetcode.com/problems/intersection-of-two-linked-lists/
두 리스트의 교차점이 있는지 확인하고, 있다면 해당 노드를 return 시켜준다.
두 포인터를 하나씩 옮기다가 끝을 만나면, 다른 list의 head로 옮겨준다. 그러고 다시 하나씩 옮긴다.
그러다 같은걸 만나면 그것을 리턴시켜주고, 만약 만나지 못하면 둘다 NULL이 되는 순간 나와서 NULL 을 반환 한다.
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if (headA == NULL || headB == NULL) return NULL;
ListNode* nodeOne = headA;
ListNode* nodeTwo = headB;
while (nodeOne != nodeTwo)
{
if (nodeOne == NULL) nodeOne = headB;
else nodeOne = nodeOne->next;
if (nodeTwo == NULL) nodeTwo = headA;
else nodeTwo = nodeTwo->next;
}
return nodeOne;
}
};