小黑麦当劳坚韧leetcode之旅:23. 合并K个升序链表
小黑答案
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:arr = []# 把所有结点导入到arr中for list_ in lists:while list_:arr.append(list_)list_ = list_.next# 对arr进行排序arr = sorted(arr,key = lambda x:x.val)# 辅助结点head = ListNode()link = head# 依次链接结点for node in arr:link.next = nodelink = link.nextreturn head.next
顺序合并
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:# 合并两个链表的函数def merge2Lists(list1,list2):head = ListNode()link = headwhile list1 and list2:if list1.val > list2.val:link.next = list2list2 = list2.nextelse:link.next = list1list1 = list1.nextlink = link.nextif list1:link.next = list1else:link.next = list2return head.nextmerge = Nonefor list_ in lists:merge = merge2Lists(merge,list_)return merge
分治法
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:# 合并两个链表def merge2Lists(list1,list2):head = ListNode()link = headwhile list1 and list2:if list1.val > list2.val:link.next = list2list2 = list2.nextelse:link.next = list1list1 = list1.nextlink = link.nextif list1:link.next = list1else:link.next = list2return head.nextdef merge(lists,l,e):if l == e:return lists[l]elif l > e:return Noneelse:m = (l + e) // 2return merge2Lists(merge(lists,l,m),merge(lists,m+1,e))return merge(lists,0,len(lists)-1)
小黑生活状态
干!!!一定要开心,内耗就输了!!!
小黑麦当劳坚韧leetcode之旅:23. 合并K个升序链表相关推荐
- 【LeetCode】【HOT】23. 合并K个升序链表(递归+分治)
[LeetCode][HOT]23. 合并K个升序链表 文章目录 [LeetCode][HOT]23. 合并K个升序链表 package hot;import java.util.Arrays;cla ...
- [分治] leetcode 23 合并K个升序链表
[分治] leetcode 23 合并K个升序链表 1.题目 题目链接 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例1: 输入:lists ...
- leetcode **23. 合并K个升序链表(2020.4.26)
[题目]**23. 合并K个升序链表 21.合并两个有序链表 **23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [1->4-& ...
- LeetCode 23合并K个升序链表24两两交换链表中的节点
维护不易,点赞再看,感谢支持 合并K个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 1: 输入:lists = [[1 ...
- 力扣 23. 合并K个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1, ...
- 82. Leetcode 23. 合并K个升序链表 (排序)
给你一个链表数组,每个链表都已经按升序排列.请你将所有链表合并到一个升序链表中,返回合并后的链表.示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3 ...
- Leetcode 23 合并k个升序链表 (每日一题 20210722)
给你一个链表数组,每个链表都已经按升序排列.请你将所有链表合并到一个升序链表中,返回合并后的链表.示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3 ...
- LeetCode 23 合并K个升序链表
https://leetcode-cn.com/problems/merge-k-sorted-lists/ 解决方案 import java.util.Comparator; import java ...
- 【LeetCode笔记】23.合并K个升序列表(Java、分治、链表)
文章目录 题目描述 解法 & 代码 二刷 冲的第一道hard,好耶! 题目描述 这道题和前面的合并两个有序链表很有联系.直接调用了整个合并函数. 可以看成我们已经有了足够优秀的"两条 ...
最新文章
- 面试题:mysql 一棵 B+ 树能存多少条数据?
- 没人教的项目管理方法之(明白该干什么) 二、项目章程如何写(下)
- python 面向对象(三大特性)
- 线程池拒绝策略-RejectedExecutionHandler
- 良好的XHTML规则
- 【KDD20】主题模型在图模型中的应用专题
- HDU 2609 最小表示法
- 拓端tecdat|Python安装TensorFlow 2、tf.keras和深度学习模型的定义
- 基于MATLAB的PID控制器设计
- 电力线通信技术的发展
- 本地怎么传文件到服务器,本地传输文件到服务器
- 计算机 金融工程 专业选择,金融工程专业对计算机编程能力是个什么要求呢
- 解决翻译论文时出现的换行问题-网页翻译-谷歌插件-翻译助手
- 什么软件测试苹果手机循环电池,教你如何检测苹果手机电池的损耗
- PPT制作技巧汇总之动画设置与播放(office 2007)
- 【无标题】Java画板简易实现
- 数据库系统概念 引言(一)
- 求逆矩阵计算机方法,求逆矩阵的快速方法(用于编程).pdf
- JavaScript 音乐导航(缓动动画、会唱歌的导航)
- 修改exe文件的图标