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.size() == 0 || lists == null) {
return null;
}
//提前清除空链表
for (int i = 0; i < lists.size(); i++) {
if (lists.get(i) == null) {
lists.remove(i);
i--;
}
}
ListNode ret = null;
ListNode retEnd = null;
ListNode tmp = null;
int delete = 0;
while(lists.size() != 0) {
tmp = lists.get(0);
delete = 0;
for (int i = 1; i < lists.size(); i++){
if (tmp.val > lists.get(i).val) {
tmp = lists.get(i);
delete = i;
}
}
if (ret == null) {
ret = tmp;
retEnd = tmp;
}else {
retEnd.next = tmp;
retEnd = tmp;
}
lists.set(delete, lists.get(delete).next);
if (lists.get(delete) == null) {
lists.remove(delete);
}
}
if (retEnd != null){
retEnd.next = null;
}
return ret;
}
}