游戏网站设计论文,ppt一键生成免费版,正常成都建设网站,张家界做网站找哪家好目录
21. 合并两个有序链表
题解#xff1a;
代码#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1#xff1a; 输入#xff1a;l1 [1,2,4], l2 [1,3,4]
输出#xff1a;[1,1,2,3,4,4]示例 2
代码 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 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 均按 非递减顺序 排列 题解 首先我们要知道函数在运行时调用自己这个函数就叫递归函数调用的过程叫做递归 递归函数必须要有终止条件否则会出错递归函数先不断调用自身直到遇到终止条件后进行回溯最终返回答案。 根据规律本题目 终止条件当两个链表都为空时表示我们对链表已合并完成。递归判断 l1 和 l2 头结点哪个更小然后较小结点的 next 指针指向其余结点的合并结果调用递归 代码 class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {if(l1null) return l2;if(l2null) return l1;if(l1.vall2.val){l1.nextmergeTwoLists(l1.next,l2);return l1;}else{l2.nextmergeTwoLists(l1,l2.next);return l2;}}
} 关于return L1: 我们要知道递归的核心是只关注这一层要干什么,返回什么,至于我的下一层不需要管 递归过程理解 如果L1空或L2空,我直接返回L1或L2就行如果L1第一个元素小于L2的就把L1的这个元素放到最前面,至于后面不用管 我只要接收下一级递归处理后给的结果(令L1-next 下一级结果)就行