这里主要用了递归的思想,刚开始的时候,首先 l1 和 l2 做了一个判断为空的处理。接着判断 l1 和 l2 的值,如果 l2 的值大与 l1 的值,就直接递归 l1 的
next 和 l2 ,反正只要有递归的思想,看着就挺好理解的。
class Solution:
def mergeTwoLists(self
, l1
: ListNode
, l2
: ListNode
) -> ListNode
:
if not l1
:
return l2
elif not l2
:
return l1
elif l1
.val
< l2
.val
:
l1
.next = self
.mergeTwoLists
(l1
.next, l2
)
return l1
else:
l2
.next = self
.mergeTwoLists
(l1
, l2
.next)
return l2
方法二:
当一个列表为空时,停止循环,然后在单独判断,将不为空的链表接到返回列表后面
class Solution:
def mergeTwoLists(self
, l1
: ListNode
, l2
: ListNode
) -> ListNode
:
node
=ListNode
(0)
l
=node
while l1
and l2
:
if l1
.val
<=l2
.val
:
x
=ListNode
(l1
.val
)
l1
=l1
.next
else:
x
=ListNode
(l2
.val
)
l2
=l2
.next
l
.next=x
l
=l
.next
l
.next=l1
if l1
!=None else l2
return node
.next
class Solution:
def mergeTwoLists(self
, l1
: ListNode
, l2
: ListNode
) -> ListNode
:
res
= pre
= ListNode
(0)
while l1
and l2
:
if l1
.val
< l2
.val
:
pre
.next = l1
l1
= l1
.next
else:
pre
.next = l2
l2
= l2
.next
pre
= pre
.next
pre
.next = l1
or l2
转载:https://blog.csdn.net/weixin_44740082/article/details/100787157
原文链接:https://blog.csdn.net/bi_diu1368/article/details/96995559
ListNode list=new ListNode(0) 初始化一个节点值为0的空节点,最常用最正规写法
struct ListNode
{
int val
; //定义val变量值,存储节点值
struct ListNode
*next; //定义
next指针,指向下一个节点,维持节点连接
}
· 在节点ListNode定义中,定义为节点为结构变量。 · 节点存储了两个变量:value 和 next。value 是这个节点的值,next 是指向下一节点的指针,当 next 为空指针时,这个节点是链表的最后一个节点。 · 注意val只代表当前指针的值,比如p->val表示p指针的指向的值;而p->next表示链表下一个节点,也是一个指针。 · 构造函数包含两个参数 _value 和 _next ,分别用来给节点赋值和指定下一节点