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; } }