[Lintcode]Merge k Sorted Lists

来源:互联网 发布:网站常用数据库 编辑:程序博客网 时间:2024/05/29 13:07

Merge k sorted linked lists and return it as one sorted list.

Analyze and describe its complexity.

Example

Given lists:

[  2->4->null,  null,  -1->null],

return -1->2->4->null.

/** * Definition for ListNode. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int val) { *         this.val = val; *         this.next = null; *     } * } */ public class Solution {    /**     * @param lists: a list of ListNode     * @return: The head of one sorted list.     */    public ListNode mergeKLists(List<ListNode> lists) {          ListNode dummy = new ListNode(0);        ListNode curr = dummy;        for(int i = 0; i < lists.size(); i++) {            if(lists.get(i) == null) {                lists.remove(i);            }        }                while(lists.size() != 0) {                        ListNode min = null;            int minIndex = 0;            for(int i = 0; i < lists.size(); i++) {                ListNode node = lists.get(i);                if(min == null) min = node;                else {                    if(node.val < min.val) {                        min = node;                        minIndex = i;                    }                }            }                        curr.next = min;            curr = curr.next;            ListNode del = lists.get(minIndex);            lists.remove(minIndex);            if(del != null && del.next != null)  {                del = del.next;                lists.add(minIndex, del);            }        }                return dummy.next;    }}


0 0
原创粉丝点击