leetcode-21-easy

merge two sorted lists
思路一: 暴力求解,依次把两链表元素插入到新链表中

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    if (list1 == null && list2 == null) return null;
    if (list1 == null) return list2;
    if (list2 == null) return list1;

    ListNode result;
    if (list1.val < list2.val) {
        result = new ListNode(list1.val);
        list1 = list1.next;
    } else {
        result = new ListNode(list2.val);
        list2 = list2.next;
    }
    ListNode head = result;

    while (true) {
        if (list1 == null) {
            result.next = list2;
            break;
        }

        if (list2 == null) {
            result.next = list1;
            break;
        }

        if (list1.val < list2.val) {
            result.next = new ListNode(list1.val);
            list1 = list1.next;
        } else {
            result.next = new ListNode(list2.val);
            list2 = list2.next;
        }
        result = result.next;
    }

    return head;
}

思路二: 递归

public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    if (list1 == null) return list2;
    if (list2 == null) return list1;

    ListNode result;
    if (list1.val < list2.val) {
        result = new ListNode(list1.val);
        result.next = mergeTwoLists(list1.next, list2);
    } else {
        result = new ListNode(list2.val);
        result.next = mergeTwoLists(list1, list2.next);
    }

    return result;
}
posted @ 2022-10-09 17:53  iyiluo  阅读(21)  评论(0)    收藏  举报