对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生成器实现微线程编程的教程
Apr 13 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
python远程连接服务器MySQL数据库
Jul 02 Python
解决python "No module named pip" 的问题
Oct 13 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
Python缓存技术实现过程详解
Sep 25 Python
python对象转字典的两种实现方式示例
Nov 07 Python
python实现差分隐私Laplace机制详解
Nov 25 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Python爬虫爬取百度搜索内容代码实例
Jun 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
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
JS验证字符串功能
2017/02/22 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
Mac下安装vue
2018/04/11 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
python发送邮件功能实现代码
2016/07/15 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
python 函数中的参数类型
2020/02/11 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
简约控的天堂:The Undone
2016/12/21 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
毕业生找工作的求职信范文
2013/12/24 职场文书
入党自我评价范文
2014/02/02 职场文书
春晚观后感
2015/06/11 职场文书
丧事主持词
2015/07/02 职场文书
国庆节新闻稿
2015/07/17 职场文书
win10安装配置nginx的过程
2021/03/31 Servers
海弦WR-800F
2022/04/05 无线电
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL