对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读取浮点数和读取文本文件示例
May 06 Python
Python itertools模块详解
May 09 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
Python 类的继承实例详解
Mar 25 Python
python安装Scrapy图文教程
Aug 14 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
django 单表操作实例详解
Jul 30 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
Django实现文件上传下载
Oct 06 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
建立文件交换功能的脚本(三)
2006/10/09 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
PHP实现微信提现功能
2018/09/30 PHP
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
ipad上运行python的方法步骤
2019/10/12 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
python语言的优势是什么
2020/06/17 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
大学四年个人自我小结
2014/03/05 职场文书
党员创先争优心得体会
2014/09/11 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
2014年科研工作总结
2014/12/03 职场文书
2015年助残日活动总结
2015/03/27 职场文书
获奖感言怎么写
2015/07/31 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python