【剑指offer】面试题 25:合并两个排序的链表
来源:互联网 发布:vb编程实例 编辑:程序博客网 时间:2024/06/12 20:44
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
时间限制:1秒 空间限制:32768K 热度指数:125690
思路
合并是先从两个链表的头结点开始,先比较两个头结点的值大小,若链表 1 的头结点的值小于链表 2 的头结点的值,
所以链表 1 的头结点的值将会是合并后的链表的头结点。
那么我们继续合并两个链表中剩余的节点,合并的步骤和前面是一样的,就是比较两个表头的值。
此时链表 2 的头结点的值小于链表 1 的头结点的值,因此链表 2 的头结点的值将是合并剩余节点得到的链表的头结点。
将这个节点和前面合并链表时得到的链表的尾节点链接起来。
我们进行两个链表的合并这一过程中,将值较小的头结点合并到已经得到的合并链表的尾节点,剩下的两个链表依旧是排序的,
因此可以认为,这一过程是典型的递归。所以算法可以采用递归的方法来实现这一合并过程。
在合并过程中,我们依旧需要考虑鲁棒性。例如链表 1 为空,链表 2 不为空; 链表 1 不为空, 链表 2 为空; 链表 1 和链表 2 都为空。
这些情况都需要我们去考虑,并进行相应的处理。
下面就是本题的算法实现:
参考代码
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表 def Merge(self, pHead1, pHead2): # write code here if not pHead1 and pHead2: return pHead2 if not pHead2 and pHead1: return pHead1 if not (pHead1 and pHead2): return None result = None if pHead1.val <= pHead2.val: result = pHead1 result.next = self.Merge(pHead1.next, pHead2) else: result = pHead2 result.next = self.Merge(pHead1, pHead2.next) return result
阅读全文
0 0
- 《剑指Offer》面试题:合并两个排序的链表
- 剑指offer面试题 合并两个排序的链表
- 面试题19:合并两个排序的链表(offer)
- 剑指offer面试题17-:合并两个排序链表
- 剑指offer面试题25:合并两个排序的链表-java
- 【剑指offer】面试题25:合并两个排序的链表
- 【剑指offer】面试题 25:合并两个排序的链表
- 剑指offer--面试题25:合并两个排序的链表
- [剑指offer][面试题17]合并两个排序的链表
- 剑指offer 面试题17 合并两个排序的链表
- 剑指Offer:面试题题17 合并两个排序的链表
- 《剑指Offer》面试题17:合并两个排序的链表
- 《剑指Offer》学习笔记--面试题17:合并两个排序的链表
- 剑指offer 面试题17—合并两个排序的链表
- 剑指Offer--面试题17:合并两个排序的链表--Java实现
- 【剑指Offer学习】【面试题17 ::合并两个排序的链表】
- 【剑指Offer面试题】 九度OJ1519:合并两个排序的链表
- 剑指Offer面试题17(Java版):合并两个排序的链表
- 目录作用,正则
- hdu1695(容斥原理)
- hdu3966(树链剖分)
- java中常用的快捷键
- ruby rails指定版本创建项目报错指导
- 【剑指offer】面试题 25:合并两个排序的链表
- 多图片上传(前端)
- 快速取两个集合的交集
- SQL新手新手向入门修炼-分析函数
- RSS——<channel> 元素
- JAVA开发环境的搭建(配置JAVA开发环境)以及使用eclipse从头一步步创建java项目
- 利用php生成xml
- Android学习笔记之图像颜色处理(ColorMatrix)
- 鼠标测试工具Simple_Mouse_Test