第一次接触到python链表。。。。。好难。。加油
链表注重的是节点。链表的结点走到下一个
题目:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
代码+题解:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def mergeTwoLists(self, list1, list2):
"""
:type list1: Optional[ListNode]
:type list2: Optional[ListNode]
:rtype: Optional[ListNode]
"""
#链表有个是走过=记录过
#使用递归的方法。考虑终止条件和如何递归
"""
1.终止条件:链表为空
2.如何递归:
判断l1 l2哪个节点小,
把小的结点的那个链表往后移动
且小结点之后的结点继续与另一个链表剩下结点比较
"""
#先写终止条件:
if not list1: #l1为空
return list2 #把l2剩下的全拼到l1就行
if not list2:
return list1
#比较此时的两个数值大小
if list1.val <= list2.val:
list1.next=self.mergeTwoLists(list1.next,list2)
return list1 #这也是整个递归最后的终止条件
else:#即l1>l2.就把l2那个节点往后移动并且与l1剩下的结点比较
list2.next=self.mergeTwoLists(list2.next,list1)
return list2
不懂点:
1.为什么return的是整个列表。原以为列表的list1/list2是指当下指向的值,但是return的时候都把所有的值输出了。。。。。救命。。。。