网站开发代理报价表,学习网站大全,百度优化插件,可以做司法考试题的网站一、题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1#xff1a; 输入#xff1a;l1 [1,2,4], l2 [1,3,4]
输出#xff1a;[1,1,2,3,4,4]示例 2#xff1a;
输入#xff1a;l1 [], l2 []
输出#x… 一、题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 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 100l1 和 l2 均按 非递减顺序 排列 二、思路解析 既然是递归我们就得考虑所有条件方便我们给出限制条件以防止程序无限地递归。
于是分析得出有如下四种情况 1) list1 为空 2) list2 为空 3list1 元素 list2 元素 4list2 元素 list1 元素
至于 1和 2情况我们分别返回 list2 和 list1 即可因为一个都为空了肯定只能返回另一个了。
剩下另外两种我们直接上递归即可。 值得一提的是罗根我仔细想了一下要是两个链表都为 null 这种情况呢
最后我得出的结论是直接返回 list2 因为在第一个 if 语句判断的时候符合了条件已经直接返回了
最后再来看下完整代码吧~ 三、完整代码 /*** 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) {ListNode L3 new ListNode();if(list1 null){return list2;} else if(list2 null){return list1;}else if(list1.vallist2.val){list1.next mergeTwoLists(list1.next,list2);return list1;}else {list2.next mergeTwoLists(list2.next,list1);return list2;}}
} 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步