博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指Offer》JZ16:合并两个排序的链表(迭代法)
阅读量:4091 次
发布时间:2019-05-25

本文共 1139 字,大约阅读时间需要 3 分钟。

本系列文章为《剑指Offer》刷题笔记。

刷题平台:

在这里插入图片描述
思路
先判断输入的链表是否为空的指针。

  • 如果第一个链表为空,则直接返回第二个链表;
  • 如果第二个链表为空,则直接返回第一个链表。
  • 如果两个链表都是空链表,合并的结果是得到一个空链表。

若两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表中的值小,即赋给合并链表指针即可。

使用递归就可以轻松实现。

# Definition for singly-linked list.# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:        # write code here        if not l1:            return l2        if not l2:            return l1                pMergeHead = None                if l1.val < l2.val:            pMergeHead = l1    # pHead1小,就先放            pMergeHead.next = self.mergeTwoLists(l1.next, l2)        else:    # pHead2小,就先放            pMergeHead = l2            pMergeHead.next = self.mergeTwoLists(l1, l2.next)        return pMergeHead

编写递归的第一步,应当是明确当前函数应当完成的功能。

  • 函数功能

    返回 l1 指向的结点 和 l2 指向的结点中,值较小的结点
    并将从下级函数获得的返回值,链接到当前结点尾部

  • 函数结束条件

    当 l1 为空,或 l2 为空,函数结束
    返回 l1 或 l2 中剩下的部分

参考:https://cuijiahua.com/blog/2017/12/basis_16.html

参考:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/he-bing-liang-ge-pai-xu-de-lian-biao-die-dai-di-gu/

转载地址:http://byjii.baihongyu.com/

你可能感兴趣的文章
Python 趣味打怪:147 段简单代码助你从入门到大师
查看>>
卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
查看>>
厉害了!Python 编辑器界的神器 Jupyter ,推出官方可视化 Debug 工具!
查看>>
卧槽!Java 虚拟机竟然还有这些性能调优技巧...
查看>>
JavaScript 诞生的这 20 年来,都发生了什么...
查看>>
听说玩这些游戏能提升编程能力?
查看>>
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
上古语言从入门到精通:COBOL 教程登上 GitHub 热榜
查看>>
哈哈哈哈,「00 后黑话破解器」火爆 GitHub,这波操作我给满分!
查看>>
再见,Eclipse...
查看>>
超全汇总!B 站上有哪些值得学习的 AI 课程...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
神器面世:让你快速在 iOS 设备上安装 Windows、Linux 等操作系统!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
GitHub 开源神器:堪称作业终结者!
查看>>
太赞了!GitHub 标星 2.4k+,《可解释机器学习》中文版正式开放!
查看>>
程序员用 AI 修复百年前的老北京视频后,火了!
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>