leetcode python 012 hard 合并k个有序链表
#[LeetCode] Merge k Sorted Lists 合并k个有序链表(升序)
import numpy as np
import time
class Node(object):
def __init__(self,n,next_node=None):
self.data=n
self.next=next_node
class linklist(object):
def __init__(self):
self.head=None
def init(self,data):
assert type(data)==list,type(data)
self.head=Node(data[0],None)
p=self.head
for i in data[1:]:
node=Node(i)
p.next=node
p=p.next
def show(self):
l=[]
p=self.head
while p:
l.append(str(p.data))
p=p.next
print('->'.join(l))
def hebing(link1,link2):
p1,p2=link1.head,link2.head
if p1.data>p2.data:
return hebing(link2,link1)
while p2:
if not p1.next and p2.next:
p1.next=p2
return link1
if p1.data < p2.data and p1.next.data>p2.data:
px=p1.next
py=p2.next
p1.next=p2
p2.next=px
p2=py
p1=px
elif p1.next.data<p2.data:
p1=p1.next
return link1
def fenzu(group):
n=len(group)
if n==1:
return group[0]
elif n==2:
return hebing(group[0],group[1])
else:
return hebing(fenzu(group[:n//2]),fenzu(group[n//2:]))
l1,l2,l3=[1,3,5,9],[0,2,4,6,8,10],[3.1,5.5,15,46]
link1,link2,link3=linklist(),linklist(),linklist()
link1.init(l1)
link2.init(l2)
link3.init(l3)
fenzu([link1,link2,link3]).show()
leetcode python 012 hard 合并k个有序链表的更多相关文章
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...
- 023 Merge k Sorted Lists 合并K个有序链表
合并K个有序链表,并且作为一个有序链表的形式返回.分析并描述它的复杂度. 详见:https://leetcode.com/problems/merge-k-sorted-lists/descripti ...
- 23.合并k个有序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- 【LeetCode题解】21_合并两个有序链表
目录 21_合并两个有序链表 描述 解法一:迭代 思路 Java 实现 Python 实现 解法二:递归 思路 Java 实现 Python 实现 21_合并两个有序链表 描述 将两个有序链表合并为一 ...
- Leetcode题库——23.合并k个排序链表
@author: ZZQ @software: PyCharm @file: mergeKLists.py @time: 2018/10/12 19:55 说明:合并 k 个排序链表,返回合并后的排序 ...
- Leetcode(23)-合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1-&g ...
- LeetCode 23 Merge k Sorted Lists(合并k个有序链表)
题目链接: https://leetcode.com/problems/merge-k-sorted-lists/?tab=Description Problem: 给出k个有序的list, 将其进行 ...
- LeetCode第二十三题-合并n个有序链表
Merge k Sorted Lists 问题简介:合并k个已排序的链表并将其作为一个排序链表返回. 举例: 输入: [ 1->4->5, 1->3->4, 2->6 ] ...
随机推荐
- Eureka服务注册与发现
一.服务注册 注册Eureka的服务非常的简单,只需要引入spring-cloud-starter-netflix-eureka-client的jar包即可. <dependency> & ...
- python SyntaxError: Non-ASCII character '\xe6' in file
[1]python程序执行报错 报错:SyntaxError: Non-ASCII character '\xe6' in file /tmp/788580473/main.py on line 7, ...
- QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
一.QtQuick多页面切换方法 (1)“隐藏法” 前一个视图visible设为false或者透明度opacity设为0,相当于“隐藏”了,实际还存在: 要显示的视图visible设为true或者透明 ...
- 158A Next Round
A. Next Round time limit per test 3 seconds memory limit per test 256 megabytes input standard input ...
- dotnet core命令
dotnet run -----运行程序 dotnet publish -r centos-x64 -----发布程序 mkdri 文件名--->cd 文件名--->dotnet new ...
- 【js】深拷贝一文中的几个错误点
原文:https://www.cnblogs.com/wuhairui/p/10370227.html 得到网友反馈,试过后也再查了下资料: 1.JSON.parse(JSON.stringify(o ...
- python爬虫——跟踪登录过程以及意外的发现(4)
新浪微博的消息还是很多的,值得弄个账号去爬.不过都有账号了,还需要特意再搞一个吗? 直接上去跟踪.分别使用www和wap端登录: wap端相对简单,form表单都没有用到前面传的数据.但是我看到表单时 ...
- Python 面向对象介绍
面向对象,面向过程 面向对象引子 人狗大战,人与狗都有不同的特点,如果要写出这两个不同角色 需要写出两个角色,可以使用嵌套函数,函数内在写入函数,然后通 过字典,将里层函数reture出来,在调用. ...
- WIN10下,JAVA安装及环境变量配置(cmd可以运行java,却不能运行javac)
1.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 . 第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中.(不能都安装在java文件夹的根 ...
- 单元测试系列之六:JUnit5 技术前瞻
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6868495.html JUnit ...