对python实现合并两个排序链表的方法详解


Posted in Python onJanuary 23, 2019

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

1、迭代方法

def Merge(self, pHead1, pHead2):
    p1, p2 = pHead1, pHead2
    if p1 and p2:
      if p1.val < p2.val:
        head = p1
        p1 = p1.next
      else:
        head = p2
        p2 = p2.next
      cur = head
    elif p1:
      return p1
    else:
      return p2

    while p1 and p2:
      if p1.val < p2.val:
        cur.next = p1
        p1 = p1.next
      else:
        cur.next = p2
        p2 = p2.next
      cur = cur.next
    if p1:
      cur.next = p1
    else:
      cur.next = p2
    return head

2、递归方法

def Merge_rcv(self, pHead1, pHead2):
    if not pHead1:
      return pHead2
    if not pHead2:
      return pHead1
    if pHead1.val < pHead2.val:
      pres = pHead1
      pres.next = self.Merge(pHead1.next, pHead2)
    else:
      pres = pHead2
      pres.next = self.Merge(pHead1, pHead2.next)
    return pres

附注:

递归算法运行逻辑看着复杂,但是形式上都是简单的.每一层都表达了”当前结点要做的任务”.

思考递归算法的步骤应该是

1) 明确每一层要做的任务,eg,选择链表中较小值作为当前结点

2) 明确每一层的任务的完结点和递归连接点,eg,在pres.next处进行下一层递归

3) 明确return条件,eg,当p1,p2其中有一个为空时,递归任务结束

几乎所有的递归算法都可以沿着这三个要求思考构造,很自然不怕写递归算法,三个问题能自己在脑里回答出来,稍加修饰就是一个完整的递归算法.

这也是函数式编程的魅力所在.

以上这篇对python实现合并两个排序链表的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
Python判断Abundant Number的方法
Jun 15 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
深入理解python中的闭包和装饰器
Jun 12 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python3中的md5加密实例
May 29 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
celery4+django2定时任务的实现代码
Dec 23 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 #Python
python实现石头剪刀布程序
Jan 20 #Python
python random从集合中随机选择元素的方法
Jan 23 #Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 #Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 #Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 #Python
python3实现逐字输出的方法
Jan 23 #Python
You might like
PHP自动选择 连接本地还是远程数据库
2010/12/02 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python连接字符串的方法小结
2015/07/13 Python
Python对切片命名的实现方法
2018/10/16 Python
Django保护敏感信息的方法示例
2019/05/09 Python
python for和else语句趣谈
2019/07/02 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python归并排序算法过程实例讲解
2020/11/04 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
国贸专业个人求职信分享
2013/12/04 职场文书
市级文明单位申报材料
2014/05/07 职场文书
购房委托书范本
2014/09/18 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
博士导师推荐信
2015/03/25 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
家属联谊会致辞
2015/07/31 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Python实现位图分割的效果
2021/11/20 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers