对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
Jupyter notebook远程访问服务器的方法
May 24 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
python DataFrame 取差集实例
Jan 30 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
Sep 05 Python
Django中和时区相关的安全问题详解
Oct 12 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
删除无限级目录与文件代码共享
2006/07/12 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
不安全的常用的js写法
2009/09/15 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
PyQt QMainWindow的使用示例
2021/03/24 Python
工程地质勘察专业大学生求职信
2013/10/13 职场文书
校领导推荐信
2013/11/01 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
会计人员岗位职责
2014/03/19 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
皇城相府导游词
2015/02/06 职场文书
2015年社区工作总结
2015/04/08 职场文书
刑事上诉状范文
2015/05/22 职场文书
工作简报怎么写
2015/07/21 职场文书
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS