对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 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python文档生成工具pydoc使用介绍
Jun 02 Python
django rest framework之请求与响应(详解)
Nov 06 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
django框架模板中定义变量(set variable in django template)的方法分析
Jun 24 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
python datetime时间格式的相互转换问题
Jun 11 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
python 下载文件的几种方式分享
Apr 07 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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调用Oracle存储过程
2006/10/09 PHP
?繁体转换的class
2006/10/09 PHP
php daodb插入、更新与删除数据
2009/03/19 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
php获取淘宝分类id示例
2014/01/16 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php防止sql注入简单分析
2015/03/18 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
php xhprof使用实例详解
2019/04/15 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
2017/08/07 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
Python持续监听文件变化代码实例
2020/07/22 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
如何使用PHP session
2015/04/21 面试题
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
找工作最新求职信
2013/12/22 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
质量保证书格式模板
2015/02/27 职场文书
2015年财政所工作总结
2015/04/25 职场文书
西游记读书笔记
2015/06/25 职场文书
教师节座谈会主持词
2015/07/03 职场文书
四年级数学教学反思
2016/02/16 职场文书