import java.util.*;
/**
* 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) {
if (lists == null || lists.size() == 0) {
return null;
}
ListNode newHead = new ListNode(-1);
newHead.next = lists.get(0);
ListNode temp = newHead.next;
for (int i = 1; i < lists.size(); i++) {
ListNode node = newHead;
ListNode cur = lists.get(i);
while (temp != null && cur != null) {
if (temp.val < cur.val) {
node.next = temp;
temp = temp.next;
} else {
node.next = cur;
cur = cur.next;
}
node = node.next;
}
if (temp != null) {
node.next = temp;
}
if (cur != null) {
node.next = cur;
}
temp = newHead.next;
}
return newHead.next;
}
}