上海网站建设网页制作怎么样,西安官网优化公司,域名和网站名要一样吗,石家庄网站制作找谁题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1#xff1a;
输入#xff1a;l1 [1,2,4], l2 [1,3,4] 输出#xff1a;[1,1,2,3,4,4] 示例 2#xff1a;
输入#xff1a;l1 [], l2 [] 输出#xf…题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1
输入l1 [1,2,4], l2 [1,3,4] 输出[1,1,2,3,4,4] 示例 2
输入l1 [], l2 [] 输出[] 示例 3
输入l1 [], l2 [0] 输出[0]
提示
两个链表的节点数目范围是 [0, 50] -100 Node.val 100 l1 和 l2 均按 非递减顺序 排列
代码
递归
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (l1 null) {return l2;} else if (l2 null) {return l1;} else if (l1.val l2.val) {l1.next mergeTwoLists(l1.next, l2);return l1;} else {l2.next mergeTwoLists(l1, l2.next);return l2;}}
}循环
class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode prehead new ListNode(-1);ListNode prev prehead;while (l1 ! null l2 ! null) {if (l1.val l2.val) {prev.next l1;l1 l1.next;} else {prev.next l2;l2 l2.next;}prev prev.next;}// 合并后 l1 和 l2 最多只有一个还未被合并完我们直接将链表末尾指向未合并完的链表即可prev.next l1 null ? l2 : l1;return prehead.next;}
}总结
优先推荐循环解法虚拟头结点是关键