leetcode 23. Merge k Sorted Lists (分治法)
来源:互联网 发布:uva 编程 编辑:程序博客网 时间:2024/04/30 11:39
题意:
给你k个有序的链表,让你合并成一个有序的链表。
思路:
直接一个一个合并的话,耗时448ms,超时了,对于这种方法,最先合并的数据可能会多次和后面的数据进行比较,这大大浪费了时间,运行时间会大于n^3。运用分治的方法,如果分成两组两组比较,合并好的数据之间就不会在进行比较,大大减少了比较的次数,运行时间最高为logn*n^2。
//java是完全的面向对象编程,不能在类外定义函数,调用函数必须先生成对象,,这点和c++很不同。。。
java代码:
class Solution { public ListNode dfs(ListNode[] lists,int s,int e){ if(s==e){ return lists[s]; } ListNode root = new ListNode(0); ListNode temp = root; int mid = (s+e)>>1; ListNode head = dfs(lists,s,mid); ListNode list = dfs(lists,mid+1,e); while(head!=null||list!=null){ if(head==null){ temp.next = list; list = list.next; } else if(list==null||head.val<=list.val){ temp.next = head; head = head.next; } else{ temp.next = list; list = list.next; } temp = temp.next; } return root.next; } public ListNode mergeKLists(ListNode[] lists) { int len = lists.length; if(len==0) return null; int s = 0; int e = len-1; Solution ss = new Solution(); return ss.dfs(lists,s,e); } Solution(){}}
阅读全文
0 0
- leetcode 23. Merge k Sorted Lists (分治法)
- LeetCode Merge k Sorted Lists(分治法)
- LeetCode23. Merge k Sorted Lists分治法
- leetcode 23. LeetCode Merge k Sorted Lists
- [LeetCode]23.Merge k Sorted Lists
- LeetCode --- 23. Merge k Sorted Lists
- LeetCode 23.Merge k Sorted Lists
- [Leetcode] 23. Merge k Sorted Lists
- 【LeetCode】23.Merge k Sorted Lists
- [leetcode] 23.Merge k Sorted Lists
- Leetcode-23.Merge k Sorted Lists
- [Leetcode]23. Merge k Sorted Lists @python
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- leetcode 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- [leetcode] 23. Merge k Sorted Lists
- LeetCode 23. Merge k Sorted Lists
- git概念和原理
- 大番薯H5十三水棋牌源码下载
- 基本光照模型实现-高光反射
- MapReduce之全流程讲解
- [NetWrap]Semantic Video CNNs through Representation Warping
- leetcode 23. Merge k Sorted Lists (分治法)
- 【Android】Fragment懒加载和ViewPager的坑
- 关于特斯拉命案,外国人这样说
- 继攻克围棋后,Deepmind想“看透”人类的眼睛
- java线程池
- 窗口、文档、视图、元素各种宽高
- December in English(2017)
- MMU(内存管理单元)分析
- “互联网+产业“”方法论