对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实现抢购IPhone手机
Feb 07 Python
python学生信息管理系统(完整版)
Apr 05 Python
python中强大的format函数实例详解
Dec 05 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Pandas中resample方法详解
Jul 02 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
python如何将两个txt文件内容合并
Oct 18 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
Jun 02 Python
基于python实现模拟数据结构模型
Jun 12 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
整理Python中常用的conda命令操作
Jun 15 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作的文本留言本的例子(二)
2006/10/09 PHP
图书管理程序(一)
2006/10/09 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
任意存:BOXFUL
2018/05/21 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
小学生读书笔记范文
2015/06/30 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python