剑指offer-25.合并两个排序列表
时间:2020-04-21
本文章向大家介绍剑指offer-25.合并两个排序列表,主要包括剑指offer-25.合并两个排序列表使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.递归法
1 class Solution: 2 # 返回合并后列表 3 def Merge(self, pHead1, pHead2): 4 # write code here 5 if pHead1 == None: 6 return pHead2 7 if pHead2 == None: 8 return pHead1 9 pMergedHead = None 10 if pHead1.val < pHead2.val: #有递归,所以用if就可以比较依次所有元素,不用while 11 pMergedHead = pHead1 12 pMergedHead.next = self.Merge(pHead1.next, pHead2) #pMergedHead可以将元素依次连接起来 13 else: 14 pMergedHead = pHead2 15 pMergedHead.next = self.Merge(pHead1, pHead2.next) 16 return pMergedHead
2.指针法(非递归)
class Solution: # 返回合并后列表 def Merge(self, pHead1, pHead2): # write code here mergeHead = ListNode(90) p = mergeHead while pHead1 and pHead2: if pHead1.val >= pHead2.val: mergeHead.next = pHead2 pHead2 = pHead2.next else: mergeHead.next = pHead1 pHead1 = pHead1.next mergeHead = mergeHead.next #写在if条件外,避免if和else里面重复写 if pHead1: mergeHead.next = pHead1 elif pHead2: mergeHead.next = pHead2 return p.next
3.自己写的,代码不够简洁,
1 class Solution: 2 # 返回合并后列表 3 def Merge(self, pHead1, pHead2): 4 # write code here 5 p1 = pHead1 6 p2 = pHead2 7 if not pHead1 and not pHead2: 8 return None 9 if not pHead1 and pHead2: #不要忘记考虑一个链表为空的情况 10 return pHead2 11 if pHead1 and not pHead2: 12 return pHead1 13 if pHead1.val <= pHead2.val: 14 p = phead = pHead1 15 p1 = pHead1.next 16 else: 17 p = phead = pHead2 18 p2 = pHead2.next 19 20 while p1 and p2: 21 if p1.val <= p2.val: 22 phead.next = p1 23 p1 = p1.next 24 else: 25 phead.next = p2 26 p2 = p2.next 27 phead = phead.next 28 if p2: 29 phead.next = p2 30 if p1: 31 phead.next = p1 32 return p
原文地址:https://www.cnblogs.com/wanrongshu/p/12743368.html
- 引入Fragment原来是这么回事
- Fragment显示和隐藏、绑定和解绑
- 一网打进Linux下那些查找命令
- 高颜值可定制在线绘图工具-第三版
- network3D 交互式网络生成
- 如何用六点教会老婆写 Python ?
- 连高晓松都想学的区块链江湖切口,「HODL」是什么意思?
- Spring Data REST 与 Spring RestTemplate 实战详解
- 程序员炒股,如何计算股票投资组合的风险和收益
- Docker 容器化部署运维 OpenStack 和 Ceph
- 关于设计模式的思考
- Spring 框架之 AOP 原理剖析
- Java 平台反应式编程(Reactive Programming)入门
- 从原理到实例,他用区块链技术做一了个COIN 客户端
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOs7下Zabbix安装教程——准备工作
- python:HTTP Error 505: HTTP Version Not Supported
- PYES异常: TypeError: 'NoneType' object is not callable
- 第十八篇 zabbix创建自定义报警媒介
- 原创|如果懂了HashMap这两点,面试就没问题了
- RTSP协议网络摄像头互联网直播开源流媒体平台
- RTSP协议网页无插件播放,匿名登录不显示设备资源如何解决?
- 设计模式~代理模式
- Linux工具入门:make工具与Makefile文件
- PF_RING的多种负载均衡方法
- 【拓展】686- 如何在 Web 上大规模生成 UUID
- Linux进程管理与性能监控
- 重学数据结构(一、线性表)
- Jmeter系列(49)- 详解 HTTP Cookie 管理器
- java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决