对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中assert用法实例分析
Apr 30 Python
Python ftp上传文件
Feb 13 Python
Python反射用法实例简析
Dec 22 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python通过实例讲解反射机制
Oct 17 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
Pycharm修改python路径过程图解
May 22 Python
TensorFlow固化模型的实现操作
May 26 Python
Python matplotlib模块及柱状图用法解析
Aug 10 Python
Python入门基础之数字字符串与列表
Feb 01 Python
通过Python把学姐照片做成拼图游戏
Feb 15 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
CI框架给视图添加动态数据
2014/12/01 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
javascript中的new使用
2010/03/20 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python压缩和解压缩zip文件
2015/02/14 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Python多线程爬虫简单示例
2016/03/04 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
2014年党支部承诺书
2014/05/30 职场文书
四风问题对照检查材料
2014/09/22 职场文书
实习介绍信模板
2015/01/30 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2015年父亲节寄语
2015/03/23 职场文书
入党积极分子考察意见
2015/06/02 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang