对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如何把嵌套列表转变成普通列表
Mar 20 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python unittest模块用法实例分析
May 25 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python 进程间数据共享multiProcess.Manger实现解析
Sep 23 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
一文搞懂python异常处理、模块与包
Jun 26 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实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
PHP类的声明与实例化及构造方法与析构方法详解
2016/01/26 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
Opacity.js
2007/01/22 Javascript
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
python 测试实现方法
2008/12/24 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
python3实现猜数字游戏
2020/12/07 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
Larsson & Jennings官网:现代瑞士钟表匠
2018/03/20 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
最新大学生自我评价
2013/09/24 职场文书
企业文化建设实施方案
2014/03/22 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
专家推荐信范文
2015/03/26 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android