Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 |
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public
class Solution { public
ListNode mergeKLists(ArrayList<ListNode> lists) { ListNode head = null ; if (!lists.isEmpty()){ while (lists.size() > 1 ){ ListNode first = lists.remove( 0 ); ListNode second = lists.remove( 0 ); ListNode newNode = merge2Lists(first, second); lists.add( 0 , newNode); } head = lists.get( 0 ); } return
head; } public
ListNode merge2Lists(ListNode first, ListNode second){ ListNode head = new
ListNode( 0 ); ListNode nextNode = head; while (first != null
&& second != null ){ if (first.val <= second.val){ nextNode.next = first; first = first.next; nextNode = nextNode.next; } else { nextNode.next = second; second = second.next; nextNode = nextNode.next; } } if (first == null ) nextNode.next = second; else nextNode.next = first; head = head.next; return
head; } } |
leetcode--Merge k Sorted Lists
原文:http://www.cnblogs.com/averillzheng/p/3542331.html