标签:ListNode 21 递归 示例 链表 l2 l1 Leetcode
21. 合并两个有序链表【笔记】
链接
https://leetcode-cn.com/problems/merge-two-sorted-lists/
前言
链表系列还需多做题巩固
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
- 示例1
- 示例2
输入:l1 = [], l2 = []
输出:[]
- 示例3
输入:l1 = [], l2 = [0]
输出:[0]
关键
- 递归的思想
递归也需要做一系列题来巩固
思路1
- 终止条件:当两个链表都为空时,表示我们对链表已合并完成。
- 如何递归:我们判断 l1 和 l2 头结点哪个更小,然后较小结点的 next 指针指向其余结点的合并结果。(调用递归)
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1: return l2 # 终止条件,直到两个链表都空
if not l2: return l1
if l1.val <= l2.val: # 递归调用
l1.next = self.mergeTwoLists(l1.next,l2)
return l1
else:
l2.next = self.mergeTwoLists(l1,l2.next)
return l2
- 注意代码中self:
python 中类class中的方法第一个参数必须是 self ,不然实例无法正确调用类中的方法;要将def和class相区别
相关知识
疑问
参考
标签:ListNode,21,递归,示例,链表,l2,l1,Leetcode 来源: https://blog.csdn.net/Kobaayyy/article/details/115472518
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。