🌗 21. 合并两个有序链表

吞佛童子2022年6月20日
  • algorithm
  • list
小于 1 分钟

🌗 21. 合并两个有序链表

难度: 🌗

问题描述

img.png


解法

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        // 思路:
        // 在一条链表的基础上插入新的节点
        if(list1 == null) {
            return list2;
        }
        if(list2 == null) {
            return list1;
        }
        ListNode res = new ListNode(-1);
        ListNode cur = res;
        while(list1 != null && list2 != null) {
            if(list1.val <= list2.val) {
                cur.next = new ListNode(list1.val);
                cur = cur.next;
                list1 = list1.next;
            } else {
                cur.next = new ListNode(list2.val);
                cur = cur.next;
                list2 = list2.next;
            }
        }
        if(list1 != null) {
            cur.next = list1;
        }
        if(list2 != null) {
            cur.next = list2;
        }
        return res.next;
    }
}

输出

img_1.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou