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]:
        res = []
        for eachlink in lists:
            while eachlink:
                res.append(eachlink.val)
                eachlink = eachlink.next
        res.sort()
        duhead = ListNode()
        t = duhead
        for eve in res:
            newnode = ListNode(eve)
            duhead.next = newnode
            duhead = duhead.next
        return t.next

解法二:堆(每次都选择第一列最小的元素排队去)

class Solution:
    def mergeKLists(self, lists: List[ListNode]) -> ListNode:
        l = []
        n = len(lists)
        for i in range(n):
            if lists[i]:
                heapq.heappush(l, (lists[i].val, i))
        dummy_node = ListNode(-1)
        cur = dummy_node
        while l:
            _, index = heapq.heappop(l)
            # 定位到此时应该出列的那个链表的头结点
            head = lists[index]
            # 开始“穿针引线”
            cur.next = head
            cur = cur.next
            # 同样不要忘记判断到链表末尾结点的时候
            if head.next:
                # 刚刚出列的那个链表的下一个结点成为新的链表头结点加入优先队列
                heapq.heappush(l, (head.next.val, index))
                # 切断刚刚出列的那个链表的头结点引用
                lists[index] = head.next
                head.next = None
        return dummy_node.next

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 移动端(H5)项目怎么实现页面缓存(即列表页面进入详情返回后列表页面缓存且还原页面滚动条位置)keep-alive简单使用

一、需求 产品要求:Vue移动端项目进入列表页,列表页需要刷新,而从详情页返回列表页,列表页则需要缓存并且还原页面滚动条位置 二、实现思路 1、使用Vue中的keep-alive组件,keep-alive提供了路由缓存功能 2、因为我项…

优先级队列

优先级队列的基本使用 模拟实现上面的接口函数&#xff0c;优先级队列不是队列&#xff0c;而是类似一个堆一样的东西&#xff0c;我们先来试试它的接口函数是怎么个样子的。 需要包含的头文件是queue。 #include<iostream> #include<queue> using namespace std;…

2024/4/5—力扣—字符串相乘

代码实现&#xff1a; 方法一&#xff1a;常规解法——超出整数表示范围 long long char_to_num(char *str) {long long num 0;for (int i 0; i < strlen(str); i) {num num * 10 (str[i] - 0);}return num; }char* multiply(char *num1, char *num2) {long long a cha…

拥抱智能,IT运维将有哪些变化?

Gartner数据显示&#xff0c;2023年AIOps在中国市场渗透率只达到目标受众的5%-20%。这一数据意味着仍有大量企业还未进行AIOps建设&#xff0c;未来AIOps市场前景广阔。目前&#xff0c;已经开始应用AIOps的企业&#xff0c;智能运维水平普遍还处于辅助智能化运维阶段&#xff…

linux-docker安装nginx

1.拉取镜像&#xff1a; docker pull nginx2.创建挂在路径&#xff1a; mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/logs mkdir -p /usr/local/nginx/www mkdir -p /usr/local/nginx/conf.d 3.启动镜像:为了拿到位置文件&#xff0c;先启动下 docker run -…

Linux_应用篇(03) 文件 I/O 加强

经过上一章内容的学习&#xff0c;相信各位读者对 Linux 系统应用编程中的基础文件 I/O 操作有了一定的认识和理解了&#xff0c;能够独立完成一些简单地文件 I/O 编程问题&#xff0c; 如果你的工作中仅仅只是涉及到一些简单文件读写操作相关的问题&#xff0c;其实上一章的知…

spring框架构成

spring框架构成 模块 spring中集成了多个模块&#xff0c;包含有核心容器、数据访问、web、AOP等模块 核心容器包含有Spring Core、Spring Beans、Spring Context和EL模块 Spring Core spring的核心&#xff0c;提供Spring框架的基本功能。主要组件是BeanFactory&#xff0c;工…

实战攻防 | 记一次项目上的任意文件下载

1、开局 开局一个弱口令&#xff0c;正常来讲我们一般是弱口令或者sql&#xff0c;或者未授权 那么这次运气比较好&#xff0c;直接弱口令进去了 直接访问看看有没有功能点&#xff0c;正常做测试我们一定要先找功能点 发现一个文件上传点&#xff0c;不过老规矩&#xff0c;还…

实用运维工具(转载)

1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载&#xff1a;http://sourceforge.net/projects/nethogs/files/nethogs/0.8/nethogs-0.8.0.tar.gz/download [rootlocalhost ~]#yum -y install libpcap-deve…

Jenkins 命令无法后台运行,使用BUILD_ID=dontKillMe解决

例子&#xff1a; jenkins如果在shell里使用nohup发现还是不能后台运行&#xff0c;直接挂掉。 那么可以在jenkins命令里加上BUILD_IDdontKillMe解决 nohup python main.py >server.out 2>&1 &它的作用是在后台运行名为main.py的Python脚本&#xff0c;并将标准…

使用自己的数据基于SWIFT微调Qwen-Audio-Chat模型

目录 使用自己的数据训练参数设置自己的数据准备语音转写任务语音分类任务 开始训练不同训练方法mpddpmp ddpdeepspeed 训练实例训练详情Qwen-Audio-Chat模型 模型数据实例官方可用的数据由内部函数处理为指定格式 训练好的模型测试 使用自己的数据 官方参考文档&#xff1a;…

昇腾Ascend之npu-smi工具在Atlas 200I DK A2的简单使用

一、参考资料 npu-smi工具 二、测试环境 设备型号&#xff1a;Atlas 200 DK(Model: 3000) Operating System Version: Ubuntu 22.04 LTS CPU Type: 4核TAISHANV200M处理器 AI CPU number: 1 control CPU number: 3 RAM: 4GB miscroSD: 128GBrootdavinci-mini:~# npu-smi i…

OpenSSH 安全漏洞(CVE-2023-51385) 升级v9.7

漏洞编号&#xff1a;OpenSSH 安全漏洞(CVE-2023-51385) openssh9.7文件获取 https://f.ws59.cn/f/dtv9atef3io 复制链接到浏览器打开 处理方式 ##注释掉的根据实际情况处理 #查询原openssh9.4p1是否有安装openssh-askpass&#xff0c;若有需先删除 rpm -qa | grep openss…

Chemical Science 山东师范大学唐波课题组关于核靶向探针的综述

文献来源&#xff1a;Fluorescent probes for organelle-targeted bioactive species imaging - Chemical Science (RSC Publishing) 一、 基于RONSS的探针设计&#xff1a; 1.基于ROS的探针设计&#xff1a; ROS&#xff08;包括, , , , , &#xff09;可以扩散到细胞核内&am…

Redis 常用的基本命令

&#x1f525;博客主页&#xff1a;fly in the sky - CSDN博客 &#x1f680;欢迎各位&#xff1a;点赞&#x1f44d;收藏⭐️留言✍️&#x1f680; &#x1f386;慢品人间烟火色,闲观万事岁月长&#x1f386; &#x1f4d6;希望我写的博客对你有所帮助,如有不足,请指正&#…

MUNK电源维修GmbH高频电源E230 G60/45 WRG-TFMYCT24

德国MUNK电源维修主要系列&#xff1a;ΡKA2&#xff0c;DCAC100&#xff0c;AS100&#xff0c;HS100&#xff0c;ESA2000&#xff0c; HSG2000&#xff0c;E230 G60/45&#xff1b;E230 G100&#xff0c;D400 G100全系列型号。 常见维修型号包括&#xff1a;D400 G100/75WRG-…

wsl下Linux使用chatglm.cpp记录

前言 Linux之前用的少&#xff0c;多数还是在Windows下操作&#xff0c;导致对Linux很陌生&#xff0c;而且思维定势的&#xff0c;一有什么操作&#xff0c;还是习惯性在Windows下操作。 在chatglm.cpp操作上也是如此&#xff0c;但是代码可不管你这些&#xff0c;该报错就报…

【面试题】微博、百度等大厂的排行榜如何实现?

背景 现如今每个互联网平台都会提供一个排行版的功能&#xff0c;供人们预览最新最有热度的一些消息&#xff0c;比如百度&#xff1a; 再比如微博&#xff1a; 我们要知道&#xff0c;这些互联网平台每天产生的数据是非常大&#xff0c;如果我们使用MySQL的话&#xff0c;db实…

Git 解决分支冲突

一、前言 一直习惯于 add commit push 的三步走&#xff0c;偶然间看到了一个评论说在 push 之前还有一个 pull&#xff0c;小小的疑问就埋在了我的心里。于是我就先了解了 pull 的工作原理&#xff0c;就是先拉取代码&#xff08;fetch&#xff09;再合并分支&#xff08;mer…

【Qt 学习笔记】QWidget的enable属性 | API的介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ QWidget的enable属性 文章编号&#xff1a;Qt 学习笔记 / 15 文章目录…