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

【算法速刷(10/100)】LeetCode —— 23. 合并 K 个升序链表

按照最朴素的方法,每轮都对所给列表进行一次遍历,O(n)的复杂度获得值最小的节点,并将其上的链表指针后移一位,一旦为空则剔除数组。数组为空时结束循环。

 这样写时间复杂度较高,因为涉及到枚举最小值节点,数组的删除操作,但空间复杂度可以降到O(1)

class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {int n = lists.size();for(int i = n - 1; i >= 0; i--){if(lists[i] == nullptr)lists.erase(lists.begin() + i);}n = lists.size();if(n == 0)return nullptr;ListNode* head = nullptr, *p = nullptr;while(lists.size() > 0){n = lists.size();int minId = 0;for(int i = 1; i < n; i++){if(lists[i]->val < lists[minId]->val){minId = i;}}if(!head){head = p = lists[minId];}else{p->next = lists[minId];p = p->next;}lists[minId] = lists[minId]->next;if(!lists[minId])lists.erase(lists.begin() + minId);}return head;}
};


http://www.mrgr.cn/news/76469.html

相关文章:

  • Python进程间通讯大揭秘:原理深度剖析与实战案例分享
  • 用WordPress需要学习哪些编程知识
  • HTML5:网页开发的新纪元
  • webpack案例----pdd(anti-content)
  • DIP switch是什么?
  • STM32从上电开始启动过程详解(上电->分散加载->main函数)
  • Linux---shell脚本
  • Spring Batch :高效处理海量数据的利器
  • 15分钟学 Go 第 56 天:架构设计基本原则
  • 【操作系统不挂科】<Linux进程概念>选择题(带答案与解析)
  • shell数组
  • 预处理(1)(手绘)
  • 低代码平台:跨数据库处理的重要性与实现方式
  • JavaScript 变量:理解基元和引用类型
  • AT方法论
  • Python Tornado框架教程:高性能Web框架的全面解析
  • Scala-键盘输入(StdIn)-用法详解
  • 【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】
  • 理论力学基础:讲义与笔记(2)
  • WebChromeClient 方法分类及其功能
  • 数据研发基础| 什么是数据漂移
  • git本地分支推送到远程和远程pull到本地
  • 蓝桥杯备赛(持续更新)
  • python机器人Agent编程——多Agent框架的底层逻辑(上)
  • 《Python编程实训快速上手》第五天--模式匹配与正则表达式
  • Python学习26天