두 입력 목록, 첫 공통 노드를 찾을 수 있습니다.
공통 노드가있는 경우, 노드 반환 웁니다.
샘플은
다음과 같이 두 개의리스트 주어 :
A : A1 A2 →
↘
C1 C2 → C3 →
↗
B : → B1 → B2 B3
제 1 공통 출력 노드 C1
생각 :
A + C 형의 체인 길이 가정
의 쇄 길이를 두 B + C
가정한다는> = B, 길이의 공개 부분을 표현 하였다.
방법 하나 :하자 긴 목록 a를 이동 - B 단계 후, 마지막 만남 갈
2 : 두 목록으로 이동 목록이 목록에 갔다 엔드에 시작하는 점은 목록이 끝 연결리스트에 갔다 시작 지점. 집적 스텝 수 (A)의 교차 지점에 도달 제 + B + C, 결국 교착 제 점에서 만날 것이다.
class Solution {
public:
ListNode *findFirstCommonNode(ListNode *headA, ListNode *headB) {
ListNode* p1 = headA;
ListNode* p2 = headB;
while(p1 != p2) {
if(p1) p1 = p1 -> next;
else p1 = headB;
if(p2) p2 = p2 -> next;
else p2 = headA;
}
return p1;
}
};