LeetCode_Python3: 21. 合并两个有序链表(简单)

开始之前:从2018/8/27开始刷LeetCode,计划每周刷五题,周末进行总结并发布在csdn上,计划先刷150道题,从简单开始。

week 2-2


要求:

CODE:

# 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 not l1:
            return l2
        if not l2:
            return l1
        
        if l1.val <= l2.val:  # 当l1节点的值<=l2节点的值时
            l1.next = self.mergeTwoLists(l1.next,l2)  # l1链接到(l1后一个节点和l2节点中小的那个)
            return l1  # 当下一个节点确定之后,返回当前链表
        else:
            l2.next = self.mergeTwoLists(l2.next,l1)
            return l2

结果:

知识点:

初识递归

1. 递归必须要存在终止条件;

扫描二维码关注公众号,回复: 3223593 查看本文章

2. 所有的递归都是可以用循环来代替的;

3. 所谓的递归就是不断地调用同一个函数做同样的事情,直到终止条件,所以在每个递归循环中不要去整体考虑,而只是考虑一个当前步骤,这样会简单不少;

简单来说,递归就考虑两个问题就够了:1. 每一个循环需要执行什么, 2.到了终止条件需要执行什么。

猜你喜欢

转载自blog.csdn.net/Kuroyukineko/article/details/82528583