Lettcode_21_Merge Two Sorted Lists
2631 단어 자바LeetCode알고리즘체인 테이블LinkedList
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
For example, Given
1->2->3
, 4->5->6
,return 1->2->3->4->5->6
. Given 1->3->5
,2->4->4,return 1->2->3->4->5->6
. 생각:
(1)문 제 는 두 개의 질서 있 는 링크 를 질서 있 는 링크 로 합성 하 는 것 을 의미한다.
(2)먼저,체인 헤드 의 결산 점 을 각각 비 워 두 고 모두 비어 있 으 면 null 로 돌아 갑 니 다.L1 이 비어 있 으 면 L2 가 비어 있 지 않 으 면 L1 로 돌아 갑 니 다.L1 이 비어 있 으 면 L2 가 비어 있 지 않 고 L2 로 돌아 갑 니 다.
(2)그 다음 에 노드 p 를 결과 체인 헤드 노드 로 설정 하고 표지 노드 q 가 결과 체인 꼬리 노드 를 가리킨다.
(3)다시 한 번,통합 링크 의 노드 를 반복 적 으로 다 룹 니 다.노드 L1 과 L2 가 모두 비어 있 지 않 으 면 노드 값 을 비교 합 니 다.만약 에 L1
(4)마지막 으로 비교 하지 않 은 노드 를 판단 하고 이 노드 를 q 의 후속 노드 로 추가 하여 p 를 되 돌려 주면 결과 이다.
(5)그 비교 과정 은 다음 과 같다.
예:L1:1->3->5->13 L2: 2->4->14->17
(A)L1=1,L2=2,L1
(C)L1=3,L2=4,L1
(E)L1=5,L2=14,L1
알고리즘 코드 는 다음 과 같다.
public ListNode mergeTwoLists(ListNode L1, ListNode L2) {
if (L1 == null && L2 == null return null;
if (L1 == null && L2 != null) return L2;
if (L1 != null && L2 == null) return L1;
ListNode p = null;
ListNode q = p;
while (L1 != null && L2 != null) {
if (L1.val < L2.val) {
if (p == null) {
p = L1;
q = p;
L1 = L1.next;
continue;
}
q.next = L1;
q = q.next;
L1 = L1.next;
} else {
if (p == null) {
p = L2;
q = p;
L2 = L2.next;
continue;
}
q.next = L2;
q = q.next;
L2 = L2.next;
}
}
while (L1 != null) {
q.next = L1;
q = q.next;
L1 = L1.next;
}
while (L2 != null) {
q.next = L2;
q = q.next;
L2 = L2.next;
}
return p;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.