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. 递归必须要存在终止条件;

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值