当前位置: 首页 > news >正文

【算法】合并k个已排序的链表

✨题目链接:

NC51 合并k个已排序的链表


✨题目描述 

合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。

数据范围:节点总数 0≤𝑛≤50000≤n≤5000,每个节点的val满足 ∣𝑣𝑎𝑙∣<=1000∣val∣<=1000

要求:时间复杂度 𝑂(𝑛𝑙𝑜𝑔𝑛)O(nlogn)

✨示例1

📍输入

[{1,2,3},{4,5,6,7}]

📍输出

{1,2,3,4,5,6,7}

✨示例2

📍输入

[{1,2},{1,4,5},{6}]

📍输出

{1,1,2,4,5,6}


✨解题思路

 优先级队列:

  • 把vector中所有链表头节点丢进优先级队列中
  • 提供一个比较链表val大小的仿函数
  • 如果队列不为空,取队列顶元素插入新链表
  • 弹出队头元素用tmp接收,让tmp=tmp->next
  • 把tmp再重新插入队列
  • 最后返回newnode

✨代码

struct cmp {//重载小顶堆比较方式bool operator()(ListNode* a, ListNode* b) {return  a->val > b->val;}
};
class Solution {public:ListNode* mergeKLists(vector<ListNode*>& lists) {priority_queue<ListNode*, vector<ListNode*>, cmp> priorityq;for (int i = 0; i < lists.size(); i++){if(lists[i]!=nullptr){priorityq.push(lists[i]);}}ListNode* newnode = new ListNode(0);ListNode* cur = newnode;ListNode* tmp;while (!priorityq.empty()){cur->next = priorityq.top();tmp = priorityq.top();priorityq.pop();tmp = tmp->next;if (tmp != nullptr){priorityq.push(tmp);}cur = cur->next;}return newnode->next;}
};


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

http://www.lryc.cn/news/354950.html

相关文章:

  • 【Muduo】三大核心之EventLoop
  • ubuntu安装完桌面后如何启动
  • 知识融合概述
  • LIO-EKF: High Frequency LiDAR-Inertial Odometry using Extended Kalman Filters
  • Shell脚本学习笔记(更新中...)
  • leetcode 210.课程表II
  • SpringBootTest测试框架五
  • 赛事|基于SprinBoot+vue的CSGO赛事管理系统(源码+数据库+文档)
  • 线性化技巧:绝对值变量的线性化
  • List基本使用(C++)
  • ELK 日志监控平台(一)- 快速搭建
  • 工作中写单片机代码,与学校里有什么不同?
  • Unity LayerMask避坑笔记
  • (原创)从右到左排列RecycleView的数据
  • 【C语言】数据指针地址的取值、赋值、自增操作避坑
  • Java进阶-SpringCloud使用BeanUtil工具类简化对象之间的属性复制和操作
  • 【ES6】ECMAS6新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析
  • 刷题之从前序遍历与中序遍历序列构造二叉树(leetcode)
  • 微信小程序--微信开发者工具使用小技巧(3)
  • JDBC的 PreparedStatement 的用法和解释
  • LeetCode 面试150
  • xmake+xrepo自建仓库添加交叉编译工具链
  • 论文阅读》学习了解自己:一个粗略到精细的个性化对话生成的人物感知训练框架 AAAI 2023
  • [Java EE] 网络编程与通信原理(三):网络编程Socket套接字(TCP协议)
  • MyBatis懒加载数据(大批量数据处理)
  • MySQL--联合索引应用细节应用规范
  • 【spring boot+Lazy ORM+mysql】开发一个数据库管理系统实现对应数据库数据查看和修改
  • 知识分享:隔多久查询一次网贷大数据信用报告比较好?
  • 【Day8:JAVA字符串的学习】
  • jetcache缓存