对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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
Flask框架实现给视图函数增加装饰器操作示例
Jul 16 Python
Python设计模式之代理模式实例详解
Jan 19 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
python深copy和浅copy区别对比解析
Dec 26 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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
自己动手做一个SQL解释器
2006/10/09 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
教你如何使用php session
2013/10/28 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python递归函数定义与用法示例
2017/06/02 Python
Python使用剪切板的方法
2017/06/06 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
数控专业个人求职信范例
2013/11/29 职场文书
初三家长会邀请函
2014/01/18 职场文书
公司授权委托书
2014/04/04 职场文书
好听的队名和口号
2014/06/09 职场文书
个人简历自荐信
2014/06/26 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
就业推荐表导师评语
2014/12/31 职场文书
员工辞退通知书
2015/04/17 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android