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

leetcode 23. 合并 K 个升序链表

给你一个链表数组,每个链表都已经按升序排列。

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[1->4->5,1->3->4,2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6首先我们想到的是归并排序,对链表数组不断进行分割然后合并分割的链表
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public://分左右递归不断分割链表ListNode* apart_list(int l,int r,vector<ListNode*>& lists)//区间是前闭后开{     //这道题并不会l>=r,但是如果传参失误则需要终止递归 看似多余实则不多余if(l>=r) return nullptr;if(r-l==1) return lists[l]; //表示当前区间只有一个元素lists[l] 有序直接返回即可int mid=(l+r)/2;            //确定中间值//返回排序后的左右分割链表return merge(apart_list(l,mid,lists),apart_list(mid,r,lists));}//合并lists[h]和lists[h1]链表ListNode* merge(ListNode* h,ListNode* h1){ListNode* temp=new ListNode(0);ListNode* l1=h;ListNode* l2=h1;ListNode* cur=temp;while(l1!=nullptr&&l2!=nullptr){if(l1->val>=l2->val){cur->next=l2;cur=cur->next;l2=l2->next;}else{cur->next=l1;cur=cur->next;l1=l1->next;}}cur->next=(l1==nullptr)? l2:l1;  Listnode* result=temp->next;delete temp;   //释放内存    return result;}ListNode* mergeKLists(vector<ListNode*>& lists) { int n=lists.size();if(n==0) return nullptr;       //链表数组为空返回nullptrif(n==1) return lists[0];      //链表数组为1直接返回lists[0]即可return apart_list(0,n,lists);  //返回分割的链表}
};
http://www.lryc.cn/news/499136.html

相关文章:

  • 【Redis】深入解析Redis缓存机制:全面掌握缓存更新、穿透、雪崩与击穿的终极指南
  • SQL语法——DQL查询
  • 云计算.运维.面试题
  • 基于vue和vite的计算器
  • 《OpenCV:视觉世界的魔法钥匙》
  • 部署kafka并通过python操作
  • 【JAVA】Java高级:数据库监控与调优:SQL调优与执行计划的分析
  • 【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]
  • 跨库移植 SQL
  • (软件测试文档大全)测试计划,测试报告,测试方案,压力测试报告,性能测试,等保测评,安全扫描测试,日常运维检查测试,功能测试等全下载
  • Vue前端开发-路由跳转及带参数跳转
  • 服务器上安装 Node.js
  • 在阿里云/Linux环境搭建Gitblit服务
  • MicroBlaze软核开发(二):GPIO
  • threejs相机辅助对象cameraHelper
  • Luma 视频生成 API 对接说明
  • 服务器数据恢复—EVA存储硬盘磁头和盘片损坏离线的数据恢复案例
  • 【Python】深入探索Python类型检查:掌握 `typing` 模块的高级用法
  • Android学习15--charger
  • 顶会新宠!KAN-LSTM完美融合新方案
  • JS中对象的浅拷贝,深拷贝和引用
  • 思普企业运营平台 idsCheck Sql注入漏洞复现
  • FSWIND脉动风-风载时程生成器软件下载、安装及注册
  • spring通过RequestContextHolder获取HttpServletRequest对象
  • STM32编码器接口及编码器测速模板代码
  • qt QNetworkAccessManager详解
  • 部署 Vue 前端项目到 Linux
  • 数据分析:探索数据背后的秘密与挑战
  • 文本域设置高度 加上文字限制并show出来:
  • 深入浅出:Gin框架-简介与API开发入门