【合并 K 个升序链表】python刷题记录

news2024/9/25 13:22:26

R4-分治篇

目录

最小堆方法

分治法

ps:

如果只是数组就很好处理了

# 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]:
        stack=[]
        for row in lists:
            for r in row:
                stack.append(r)
        stack.sort()
        return stack

最小堆方法

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
#堆可以比较节点大小
ListNode.__lt__=lambda a,b : a.val<b.val
class Solution:
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
       #cur是指针,随时合并下一个节点。
       #dummy是哨兵,dummy.next返回最终的链表
       #h是最小堆
       cur = dummy =ListNode()
       #所有头节点入堆
       h=[head for head in lists if head]
       #堆化(前提是堆能比较节点大小)
       heapify(h)
       while h:
           node=heappop(h)
           if node.next:
               heappush(h,node.next)
           cur.next=node
           cur=cur.next
       return dummy.next

 

分治法

灵神题解

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
#堆可以比较节点大小
ListNode.__lt__=lambda a,b : a.val<b.val
class Solution:
    #合并两个有序链表
    def mergeTwoLists(self,list1,list2):
        cur = dummy =ListNode()
        while list1 and list2:
            if list1.val<list2.val:
                cur.next=list1
                list1=list1.next
            else:
                cur.next=list2
                list2=list2.next
            cur=cur.next
        #拼接剩余链表
        cur.next=list1 if list1 else list2
        return dummy.next

    #本题合并所有升序链表
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:
         m=len(lists)
         if m==0:
            return None
         if m==1:
            return lists[0]
         left=self.mergeKLists(lists[:m//2])
         right=self.mergeKLists(lists[m//2:])
         return self.mergeTwoLists(left,right)

牛啊

ps:

今天get到堆的出堆等基本操作方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ GDl+ 多张图片合并生成GIF动画格式图片

使用ImageMagick多张图合成GIF。 1、工具下载安装 下载地址&#xff1a;ImageMagick – Download&#xff0c;windows下载版本如下&#xff1a; 下载后&#xff0c;安装&#xff0c;安装时选择为C/C安装动态库和头文件。 2、代码实现 附加包含目录&#xff1a;ImageMagick-7.…

Is exchanging integral and sum this way allowed?

See https://math.stackexchange.com/questions/3878856/is-exchanging-integral-and-sum-this-way-allowed#:~:textYes%2C%20and%20the%20reason%20is%20simple%20-%20the,just%20a%20whole%20lot%20of%20these%20squeezed%20together.

涉密U盘管理:公司禁用个人U盘的两种常规设置方法

古语云&#xff1a;“事以密成&#xff0c;语以泄败。”此言道出了保密工作对于事业成功的重要性。 在当今这个信息爆炸的时代&#xff0c;数据的安全与保密已成为企业生存与发展的基石。尤其是在处理涉密信息时&#xff0c;任何微小的疏忽都可能引发严重的后果。 因此&#x…

zabbix7.0TLS-04-快速入门-监控项

文章目录 1 概述2 查看一个主机的所有监控项3 添加新的监控项3.1 监控项 各个配置项详解3.2 测试配置项3.3 添加成功 1 概述 一个监控项对应了一个键和值。监控项是监控数据的来源&#xff0c;没有监控项也就没有监控数据。 监控项必须添加到某一个主机中&#xff0c;一个主机…

学习日志8.8--防火墙状态检测

在之前的拓扑实验中手动配置了安全策略&#xff0c;允许trust到untrust之间进行通信&#xff0c;也允许untrust到trust之间进行通信。意味着&#xff0c;防火墙是支持单方向管控的&#xff0c;意思是inbound和outbound方向的流量管控需要分别配置。 当在配置trust到untrust的安…

【人工智能】【机器学习】-好书推荐之《Python神经网络编程》

目录 内容概览 编程环境 面向对象 学习目标 如果你是想要自学机器学习相关知识的读者&#xff0c;我相信看完这篇文章的介绍后&#xff0c;你会对机器学习有更清晰的认识。帮助你走进机器学习的殿堂。 《Python神经网络编程》&#xff08;原书名&#xff1a;Make Your Own …

STM32基础篇:I2C通信协议

I2C总线 I2C&#xff08;IIC---Inter Integrated Circuit 内部集成电路&#xff09; 以上为I2C大体结构图&#xff0c;其中时钟线SCL用于传输时钟信号&#xff0c;数据线SDA来传输实际的数据。 主机与从机 1.主机的职责 假如由从机1和从机2&#xff0c;从机1想向SDA上发送一…

瞬态太阳光模拟器特点

技术指标与主要功能 瞬态太阳光模拟器是一种高端的分析仪器&#xff0c;主要用于能源科学技术、环境科学技术和资源科学技术领域。它能够模拟太阳光的光谱、光强和光照条件&#xff0c;为实验室环境中的光伏电池及其他太阳能设备提供稳定可靠的光照环境。技术指标包括但不限于辐…

AI与PS:技术革命下的设计工具比较

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;和 Photoshop&#xff08;PS&#xff09;已成为创新和创意的两大支柱。虽然它们在某些方面有所交集&#xff0c;但本质上却有着根本的不同。本文将深入探讨这两者的不同之处&#xff0c;帮助你更全面地理解 AI 和 P…

《学会 SpringMVC 系列 · 剖析出参处理》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

知乎问答广告开户收费,知乎广告投放价格!

知乎&#xff0c;作为中国最大的知识分享社区&#xff0c;凭借其庞大的用户基础、高质量的内容生态和精准的数据分析能力&#xff0c;成为了众多企业争相投放广告的热门平台。如何在知乎上精准投放广告&#xff0c;实现品牌曝光与业绩增长&#xff0c;成为了众多企业面临的难题…

LeNet5模型搭建

文章目录 LeNet1 搭建模型2 训练模型3 测试模型3.1 预测一3.2 预测二 LeNet LeNet 诞生于 1994 年&#xff0c;是最早的卷积神经网络之一&#xff0c;并且推动了深度学习领域的发展。自从 1988 年开始&#xff0c;在许多次成功的迭代后&#xff0c;这项由 Yann LeCun 完成的开拓…

阿里云ECS之AMD实例

阿里云ECS之AMD实例 计算型实例规格族c8a关于AMD实例的使用AMD的应用场景 关于AMD实例&#xff0c;AMD实例也是云服务器ECS中的一种&#xff0c;AMD实例是阿里云新推出的重磅产品&#xff0c;基于AMD EPYCTM微处理器架构&#xff0c;该架构属于x86架构。目前已知的AMD实例规格族…

【RISC-V设计-09】- RISC-V处理器设计K0A之CIC

【RISC-V设计-09】- RISC-V处理器设计K0A之CIC 文章目录 【RISC-V设计-09】- RISC-V处理器设计K0A之CIC1.简介2.顶层设计3.端口说明4.代码设计5.仲裁代码6.总结 1.简介 核内中断控制器&#xff08;Core Interrupt Controller&#xff0c;简称CIC&#xff09;是管理和仲裁中断的…

SQL注入实例(sqli-labs/less-18)

0、初始页面 先使用brup爆破密码&#xff0c;账号admin&#xff0c;密码admin 1、确定闭合字符 判断注入点在post请求参数的User-agent处 闭合字符为单引号 2、爆库名 3、爆表名 4、爆列名 5、查询最终目标 在index.php中有这么一句 $insert"INSERT INTO security.uage…

MySQL基础——数据库客户端,数据库服务器,数据库(目录)

什么是数据库 具体&#xff1a;mysqld服务器结合内部的存储引擎所实现对数据库文件中的数据增删查改的一套方案 ——在磁盘或内存中存储特定结构组织的数据----在磁盘中存储的一套数据方案&#xff0c; 你给我字段或要求&#xff0c;我直接给你结果就行 整体&#xff1a;用户通…

gradio之进度条

输出控件显示进度&#xff0c;进度结束显示控件结果 import gradio as gr import timedef slowly_reverse(word, progressgr.Progress()):progress(0, desc"Starting")time.sleep(1)progress(0.05)new_string ""for letter in progress.tqdm(word, desc&…

概率论原理精解【9】

文章目录 集类拓扑空间基 参考文献 集类 C是一个集类&#xff08;以G的某些子集为元素的集合称为G的集类&#xff09;。 A i ∈ C , ∩ i 1 n A i ∈ C , 此为有限交封闭 C 所得集类 C ∩ f A_i \in C,\cap_{i1}^nA_i \in C,此为有限交封闭C所得集类C_{\cap f} Ai​∈C,∩i1n…

2024年黑龙江公安招聘报名流程(建议电脑)

2024年黑龙江省公安机关人民警察专项招录公告&#xff08;2810人&#xff09; 报名时间&#xff1a;2024年8月16日9:00至8月20日17:00 查询资格审查结果时间&#xff1a;2024年8月16日9:00至8月20日17:00 缴费确认时间&#xff1a;2024年8月16日9:00至8月21日17:00 网上打印准考…

程序员保碗之策

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1. **持续深化技术实力&#xff1a;从基础到前沿**夯实基础紧跟技术前沿跨领域融合 2. **提升实战能力&#xff1a;从项目到产品**参与实际项目自主实践产品思维 3. **建立个人品牌与影响力&#xff…