嗯,二十六天了
回家就先刷一题吧
最近事情更多了,插进去一件晋升的事情,总是压着一块石头似的
https://leetcode-cn.com/problems/merge-two-sorted-lists/description/
合并两个有序的链表
简单明了的方法,其实应该是递归
假设l1是空,直接返回l2
假设l2是空,直接返回l1
到这里,都比较简单的可以理解
那么接下来,如果l1的值小于l2的值,这时l1的应该指向的就是l1.next和l2合并的结果了,
嗯,这句话其实是“核心”
同样道理,如果l2的值小于l1的值,那么l2应该指向的是l1和l2.next的合并结果咯
嗯,如果能理解的话,代码就特别简单明了啦
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
if l1 is None:
return l2
if l2 is None:
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
网友评论