21. Merge Two Sorted Lists

Bas·2022년 8월 15일
0

Leetcode

목록 보기
11/11

2개의 linked-list를 하나의 sorting된 linked-list로 합친다.

  1. 작은 요소를 가지고있는 linked listHead로 삼는다.
  2. Head로 삼은 linked list의 다음 node와 (-> list1)
    헤드가 되지 못한 linked list(-> list2) 두 리스트를 다시 함수로 호출한다. => 재귀호출
    a) list1.val < list2.val
    => list1.next = list1.next와 list2의 정렬
    b) list2.val <= list1.val
    => list2.next = list1과 list2.next의 정렬
  3. list1가 null이면 list2의 head에 합쳐져있으니까 list2를 반환한다.
  4. list2가 null이면 list1의 head에 합쳐져있으니까 list1를 반환한다.
var mergeTwoLists = function(list1, list2) {
    
    if (!list1) return list2;
    if (!list2) return list1;
    
    if (list1.val < list2.val) {
        list1.next = mergeTwoLists(list1.next, list2); 
        console.log('list1', list1 );
        return list1;
    } else {
        list2.next = mergeTwoLists(list1, list2.next);
        console.log('list2', list2 );
        return list2;
    }
};

profile
바스버거

0개의 댓글