将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:输入:l1 = [], l2 = []
输出:[]
示例 3:输入:l1 = [], l2 = [0]
输出:[0]来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这是一个关于如何将自己的数值插入链表当中形成一个新的链表的题目
由于链表已经按照从小到大排列好的,所以这个不用操心,直接将链表加入即可。
几个知识点
ret = ListNode(0) 创建一个节点为0的空链表,可以用来存储新的链表模式
ret.next 找到下一个节点,可以用来直接进行赋值操作。也可以直接遍历整个链表。
基本的想法是这样的,先思考一下, 比对两个l1和l2,如果l1的值比l2小的话,直接添加l1再继续比对就好,很简单的。
这里用到的方法就是数据采集的方法。
所有需要的模块有这些
#匹配l1和l2那个值存在的。
if l1 is None:
return l2
if l2 is None:
return l1
接下来还需要思考一个点在于,如何将l1和l2进行比对。
用到的比对是.val的方法
while l1 and l2:
if l1.val < l2.val:
ret.next = l1 # 将ret节点赋值为l1
l1 = l1.next #l1减少一个节点
else:
ret.next = l2
l2=l2.next
ret = ret.next
if l1:
ret.next = l1
else:
ret.next = l2
return head.next
函数返回赋值的head值就好。head.next