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

html制作手机网站/长沙官网优化公司

html制作手机网站,长沙官网优化公司,wordpress ./,郑州专业seo哪家好给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&…

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

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入: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

示例 2:

输入:lists = []
输出:[]

示例 3:

输入:lists = [[]]
输出:[]

提示:

  • k == lists.length
  • 0 <= k <= 10^4
  • 0 <= lists[i].length <= 500
  • -10^4 <= lists[i][j] <= 10^4
  • lists[i] 按 升序 排列
  • lists[i].length 的总和不超过 10^4

解题思路

1.新链表的下一个节点一定是k个链表头中的最小节点
2.考虑选择使用最小堆

解题步骤

1.构建一个最小堆,并依次把链表头插入堆中
2.弹出堆顶接到输出链表,并将堆顶所在链表的新链表头插入堆中
3.等堆元素全部弹出后,合并工作就完成了

时空分析

时间复杂度:O(nlogk)
空间复杂度:O(k)

代码

/*** Definition for singly-linked list.* function ListNode(val, next) {*     this.val = (val===undefined ? 0 : val)*     this.next = (next===undefined ? null : next)* }*/
class MinHeap {constructor() {this.heap = [];}// 交换节点位置swap(i1, i2) {[this.heap[i1], this.heap[i2]] = [this.heap[i2], this.heap[i1]];}// 获得父节点getParentIndex(i) {return (i - 1) >> 1;}// 获得左节点getleftIndex(i) {return 2 * i + 1;}// 获得右节点getrightIndex(i) {return 2 * i + 2;}// 上移shiftUp(index) {if (index === 0) return;const parentIndex = this.getParentIndex(index);if (this.heap[parentIndex] && this.heap[parentIndex].val > this.heap[index].val) {this.swap(parentIndex, index);this.shiftUp(parentIndex);}}// 下移shiftDown(index) {const leftIndex = this.getleftIndex(index);const rightIndex = this.getrightIndex(index);if (this.heap[leftIndex] && this.heap[leftIndex].val < this.heap[index].val) {this.swap(leftIndex, index);this.shiftDown(leftIndex);}if (this.heap[rightIndex] && this.heap[rightIndex].val < this.heap[index].val) {this.swap(rightIndex, index);this.shiftDown(rightIndex);}}// 插入insert(value) {this.heap.push(value);this.shiftUp(this.heap.length - 1);}// 删除堆顶pop() {if(this.size() === 1) return this.heap.shift()const top = this.heap[0]// pop()方法删除数组最后一个元素并返回,赋值给堆顶this.heap[0] = this.heap.pop();// 对堆顶重新排序this.shiftDown(0);return top}// 获取堆顶peek() {return this.heap[0];}// 获取堆的大小size() {return this.heap.length;}
}
/*** @param {ListNode[]} lists* @return {ListNode}*/
var mergeKLists = function(lists) {const res = new ListNode(0)let p = resconst h = new MinHeap()// 插入k个升序链表的头部节点lists.forEach(l => {if(l) h.insert(l)})// 不断的地比较最小堆中k个节点的大小while(h.size()) {const n = h.pop()p.next = np = p.nextif(n.next) h.insert(n.next)}return res.next
};
http://www.lbrq.cn/news/928945.html

相关文章:

  • ASP.NET2.0网站开发全程解析/武汉网络推广
  • 儿童网站建设外文翻译/东莞seo建站哪家好
  • 安徽网站建设外贸/徐州网页关键词优化
  • 信阳做网站推广/怎样做网络推广挣钱
  • 四川住房建设部官方网站/上海平台推广的公司
  • 工厂做网站/提高网站收录的方法
  • 网站建设ppt介绍/外链网站是什么
  • 苏州制作网站的公司/中国法律服务网app最新下载
  • 做全国性的app网站推广多少/零基础学电脑培训班
  • 南通做百度网站的公司网站/电商入门基础知识
  • 小程序制作平台价格/绍兴seo外包
  • 海南定安建设局网站/想学销售去哪培训
  • 网站的下载链接怎么做/在线生成个人网站app
  • 昆明公司做网站的价格/百度竞价推广点击软件奔奔
  • 日本做美食视频网站有哪些/百度收录软件
  • 襄阳seo招聘/阜新网站seo
  • 自己可以做电子商务网站/网络推广100种方法
  • 花店网站模板 html/搜索引擎外部链接优化
  • 建设用地预审系统官方网站/正规seo大概多少钱
  • 网站权重怎么刷/外贸网站免费推广
  • 奢侈品网站 方案/阿里指数在哪里看
  • 知名的咨询行业网站制作/人力资源培训
  • 自己动手制作网站/剪辑培训班一般学费多少
  • 营销类网站模板/衡水seo优化
  • 网址和网站的区别/免费智能seo收录工具
  • 做网站怎么做多少钱/微信朋友圈推广平台
  • 中山地区做网站公司/seo外包公司兴田德润
  • 网站做用户登录/百度一下官网手机版
  • 网站制作商业模式/百度推广代运营公司
  • 棋牌软件开发/seo从0到1怎么做
  • p5.js 3D模型(model)入门指南
  • MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库
  • 《人工智能导论》(python版)第2章 python基础2.2编程基础
  • DNS污染与劫持
  • 百元级工业级核心板:明远智睿×瑞萨V2H,开启AIoT开发新纪元
  • 如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器