https://leetcode.com/problems/intersection-of-two-linked-lists/description
Q. 두개의 노드가 도중에 교차할 때 해당 교차지점을 찾아서 반환하라.
Solution
방법을 알면 간단한 문제다.
시작 지점을 align 시키는 것이 키인데, 보통의 풀이법은 두 리스트를 하나씩 전진시켜, 끝에 도달하면 반대 쪽 head에서 다시 출발한다. 이때 재출발 후, 두 노드가 만나는 지점이 교차점이 된다.
두 노드의 오프셋이 다르므로 이를 다른 노드의 시작점으로 재출발 시키면서 오프셋을 동기화 시킨 것이다.
더보기
public ListNode GetIntersectionNode(ListNode headA, ListNode headB)
{
ListNode nodeA = headA;
ListNode nodeB = headB;
bool doneA = false, doneB = false;
while(true)
{
if(nodeA == null)
{
if(!doneA)
nodeA = headB;
else
return null;
doneA = true;
}
if(nodeB == null)
{
if(!doneB)
nodeB = headA;
else
return null;
doneB = true;
}
if(nodeA == nodeB)
return nodeA;
nodeA = nodeA.next;
nodeB = nodeB.next;
}
return null;
}
적절한 결과를 얻었다.
'Leetcode > Top 100 Liked' 카테고리의 다른 글
[Matrix][Medium] 54. Spiral Matrix (0) | 2024.04.16 |
---|---|
[Linked List][Easy] 206. Reverse Linked List. (0) | 2024.04.13 |
[Linked List][Medium] 148. Sort List (0) | 2024.04.13 |
[Linked List][Medium] 142. Linked List Cycle II (0) | 2024.04.12 |
[Linked List][Easy] 141. Linked List Cycle (1) | 2024.04.11 |