Lettcode_21_Merge Two Sorted Lists

본 고 는 학습 중의 총 결 입 니 다.전재 하 는 것 을 환영 하지만 출처 를 밝 혀 주 십시오.http://blog.csdn.net/pistolove/article/details/41750865
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          q=p)표지 노드 를 노드 L1 로 가리 키 고 표지 노드 를 뒤로 이동 하 며 L1 은 그 후속 노드 를 가리 키 고 L1>=L2 는 순환 이 끝 날 때 까지 상황 이 유사 하 다.
(4)마지막 으로 비교 하지 않 은 노드 를 판단 하고 이 노드 를 q 의 후속 노드 로 추가 하여 p 를 되 돌려 주면 결과 이다.
(5)그 비교 과정 은 다음 과 같다.
        예:L1:1->3->5->13 L2: 2->4->14->17
          (A)L1=1,L2=2,L1          (B)L1=3,L2=2,L1>L2,이때 q.next=L2=2,q=q.next=2,L2=L2.next=4;
          (C)L1=3,L2=4,L1          (D)L1=5,L2=4,L1>L2,이때 q.next=L2=4,q=q.next=4,L2=L2.next=14;
          (E)L1=5,L2=14,L1          (F)L1=13,L2=14,L1          (G)L1 이 비어 있 기 때문에 이때 L2 의 후속 노드 를 q 뒤에 추가 하면 된다.
알고리즘 코드 는 다음 과 같다.
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;
}

좋은 웹페이지 즐겨찾기