当前位置: 首页 > news >正文

python给两个列表排序方法_对python实现合并两个排序链表的方法详解

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

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 opencv压缩图片_OpenCV Python 缩放图片
  • mac cad石材填充图案_这些石材装饰细节处理,你做到位了吗?
  • python逻辑_python逻辑题
  • python语言求素数_用python判断一个数是否是素数的方法
  • 统计高于平均分的人数python_python3 下载 以及 练习1
  • cv::imread导致段错误_OGG启动报错:不能创建共享内存段
  • opengl场景代码_实战篇使用Native OpenGL渲染Unity场景
  • python中dtype是object是什么意思_python – Pandas:将dtype’object’转换为int
  • 人脸比对软件_开源推荐 | 可实现门禁、AI测温敏捷开发的人脸识别应用套件
  • coursera python证书_IBM数据科学证书 | 你想要的一站式新手入门课!
  • 前后端分离项目如何部署_利用dockercompsoe部署前后端分离的项目
  • python天气图形化显示_python可视化爬虫界面之天气查询
  • 电脑控制iphone_iPhone屏幕镜像怎么用?
  • python是用什么语言开发的_为什么Python不是编程语言的未来
  • python 进度条_Python实例1之如何把进度条玩出花儿
  • hexo+github搭建个人博客
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • nodejs实现webservice问题总结
  • opencv python Meanshift 和 Camshift
  • Spring核心 Bean的高级装配
  • Swift 中的尾递归和蹦床
  • Webpack 4 学习01(基础配置)
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 翻译:Hystrix - How To Use
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 思维导图—你不知道的JavaScript中卷
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #Spring-boot高级
  • #预处理和函数的对比以及条件编译
  • (4)STL算法之比较
  • (9)STL算法之逆转旋转
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C语言)fgets与fputs函数详解
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • .Net IOC框架入门之一 Unity
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 命令行参数包含应用程序路径吗?
  • /etc/shadow字段详解
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [2016.7.Test1] T1 三进制异或
  • [Android]竖直滑动选择器WheelView的实现
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [BSGS算法]纯水斐波那契数列
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [CCIE历程]CCIE # 20604
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [flask]http请求//获取请求头信息+客户端信息
  • [GN] DP学习笔记板子
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统
  • [HackMyVM]靶场Crossbow