leetCode之合并k个排序的列表
来源:互联网 发布:大象公会 知乎 编辑:程序博客网 时间:2024/05/21 19:32
题目:
首先对于该题目想到的是参考归并排序的方法。
具体思想为:同时针对于无数个数组,我们应该将含多个链表的原始数组分割成较小的数组,后再将小数组合并成较大的数组,知道最后只有一个排序完成的数组。具体代码如下:
var mergeKLists = function(lists) { var length = lists.length; function sortList(list, beg, end){ if(beg > end) { return list; } if(beg === end) { return list[beg]; } var mid = Math.floor((end + beg)/2); var left = sortList(list,beg,mid);//这里采用递归划分数组的大小,可以提高时间复杂度 var right = sortList(list,mid+1,end); return merge(left, right); } function merge(l1,l2) { var node=new ListNode(0); var sortArray=node;//这里采用的是对象的浅拷贝 while(l1!==null &&l2!==null) { if(l1.val<l2.val){ sortArray.next = new ListNode(l1.val); l1=l1.next; }else{ sortArray.next = new ListNode(l2.val); l2=l2.next; } sortArray=sortArray.next; } while(l1!==null){ sortArray.next=new ListNode(l1.val); l1=l1.next; sortArray=sortArray.next; } while(l2!==null){ sortArray.next=new ListNode(l2.val) l2=l2.next; sortArray=sortArray.next; } return node.next;//将首个节点元素去掉 } return sortList(lists,0,length-1);};
最后结果如下:
阅读全文
0 0
- leetCode之合并k个排序的列表
- Leetcode #23 Merge k Sorted Lists 合并K个有序列表 解题报告
- leetcode解题之23.Merge k Sorted Lists Java版本(合并k个有序的链表)
- leetCode 23. Merge k Sorted Lists (合并k个排序链表) 解题思路和方法
- LeetCode 23 Merge k Sorted Lists(合并K个已排序链表)
- Leetcode 23. Merge k Sorted Lists合并k个排序链表
- leetcode 23. Merge k Sorted Lists 合并k个排序链表 优先级队列
- 合并K个已排序的链表
- 合并k个已排序的链表
- 链表——合并K个排序的链表
- LeetCode OJ 之 Merge k Sorted Lists(合并k个有序链表)
- LeetCode 合并k个有序链表
- 题目:合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表
- 合并k个排序链表,lintcode
- 合并k个排序链表
- 移动web开发--继续探索一
- 两年后无人驾驶将解放你的双手!
- 0/1背包问题 c++
- ubuntu上pycharm快捷方式启动提示没有JDK
- docker安装gitlab,redis,postgresql搭建代码托管环境
- leetCode之合并k个排序的列表
- base64生成图片——图片转换变成base64
- 河南省第十届ACM题解 C 最小秘钥
- 程序猿学习第八天,关于盒子模型
- 免费的论文查重网站
- org.hibernate.LazyInitializationException
- 建议42: 让工具类不可实例化
- 如何将.class文件转换成.java文件——JAVA反编译工具总结
- 【操作系统】内存分页技术