두 연결 목록의 교집합
6222 단어 leetcodejavascript
접근법 1:
1) 두 목록의 길이를 얻습니다.
2) 포인터를 이동하고 길이를 줄여 여분의 노드를 건너뜁니다.
3) 이제 공통 요소를 얻을 때까지 비교하십시오.
var getIntersectionNode = function(headA, headB) {
let m = getLength(headA);
let n = getLength(headB);
let a = headA, b = headB;
while (m != n) {
if (m > n) {
m--;
a = a.next;
} else {
n--;
b = b.next;
}
}
while (a && a != b) {
a = a.next;
b = b.next;
}
return a;
}
const getLength = function(head) {
if (!head) {
return 0;
}
let length = 0;
let curr = head;
while (curr.next !== null) {
curr = curr.next;
length++;
}
return length;
}
접근 2:
1) 두 개의 포인터
2) 둘 다 같지 않을 때까지 반복
3) 하나가 null이면 하나를 반환하고 다른 하나를 첫 번째와 동일하게 만듭니다.
4) 불일치할 때까지 반복
var getIntersectionNode = function(headA, headB) {
let ptrA = headA
let ptrB = headB
while(ptrA != ptrB){
if(ptrA == null){
ptrA = headB
}else{
ptrA = ptrA.next
}
if(ptrB == null){
ptrB = headA
}else{
ptrB = ptrB.next
}
}
return ptrA
};
Reference
이 문제에 관하여(두 연결 목록의 교집합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/zeeshanali0704/intersection-of-two-linked-lists-4dk1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)