左神算法笔记-合并有序链表

38 阅读1分钟
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
    // 虚拟头节点
    ListNode dum = new ListNode();
    ListNode cur = dum;

    while (list1 != null && list2 != null) {
        // 第一个链表小于第二个链表的值,取第一个链表
        if (list1.val <= list2.val) {
            cur.next = list1;
            list1 = list1.next;
        } else {
            cur.next = list2;
            list2 = list2.next;
        }
        // 移动新链表
        cur = cur.next;
    }
    // 将两个链表存在剩余的链表,挂到新链表下一个位置
    cur.next = list1 != null ? list1 : list2;
    // 返回新链表的下一个元素
    return dum.next;
}