LeetCode 23 Merge k Sorted Lists 高空间消耗解法与堆的解法,还需要学习堆的做法
2015-08-12 14:56
477 查看
Merge k Sorted Lists
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
解法思路:我的想法是,首先利用O(n^2)的遍历,将所有值存到整型数组当中,将数组排序,输出到一个新的链表当中,思路非常清晰,效率也还不错。但是这样的算法有着较高的内存开销,并且没有利用链表的特性。因此,不提倡这种类似于作弊的算法。虽然能够解决K-lists类的问题,但是,对于内存有要求的情景下,该算法就面临较大的考验。
代码如下:
堆的方法详解见这个算法:
http://blog.csdn.net/linhuanmars/article/details/19899259?utm_source=tuicool
Merge k sorted
linked lists and return it as one sorted list. Analyze and describe its complexity.
解法思路:我的想法是,首先利用O(n^2)的遍历,将所有值存到整型数组当中,将数组排序,输出到一个新的链表当中,思路非常清晰,效率也还不错。但是这样的算法有着较高的内存开销,并且没有利用链表的特性。因此,不提倡这种类似于作弊的算法。虽然能够解决K-lists类的问题,但是,对于内存有要求的情景下,该算法就面临较大的考验。
代码如下:
public ListNode mergeKLists(ListNode[] lists) { if(lists.length==0){ return null; } int []num = new int[5000]; int index=0; for (int i = 0; i < lists.length; i++) { ListNode l = lists[i]; while(l!=null){ num[index]=l.val; l = l.next; index++; } } if(index==0){ return null; } Arrays.sort(num,0,index); ListNode temp1 = new ListNode(-1);// l1 l2 首尾相连 然后冒泡 ListNode t1 = temp1; int i =0; while(i!=index){ temp1.val = num[i++]; if(i!=index){ temp1.next = new ListNode(0); } temp1 = temp1.next; } return t1; }
堆的方法详解见这个算法:
http://blog.csdn.net/linhuanmars/article/details/19899259?utm_source=tuicool
相关文章推荐
- 【Linux】makefile文件
- 马来西亚资料整理
- BZOJ2944 : [Poi2000]代码
- C#判断密码强度的方法
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- 设置android SurfaceView背景透明
- iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
- 【ecstore】gift基础知识
- UI024---UITableView的总结
- poj-1050-To the Max【DP】
- java中native方法的使用
- linux运维工作手册
- 标准SQL资料整理
- 微信公众开发-- 上传图片 "errcode":41005,"errmsg":"media data missing"
- 使用CAShapeLayer和贝塞尔曲线绘制进度条
- eclipse 在win7 64两个图标出现位操作系统无法锁定到任务栏或任务栏
- WIN32一些文件及窗口操作
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- imageDownloader
- 谈话《百度搜索引擎的网页质量白皮书》