码迷,mamicode.com
首页 > 其他好文 > 详细

Merge k Sorted Lists

时间:2014-06-17 21:34:41      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:归并排序   leetcode   array   linkedlist   java   

题目

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

方法

使用归并排序的思想,两两合并,直到最终变成一个。
		    public ListNode mergeKLists(ArrayList<ListNode> lists) {
		        int len = lists.size();
		        if(len == 0){
		            return null;
		        }
		        int n = ( len + 1 ) / 2;
		        while(len > 1){
		            for(int i = 0; i < n ; i++){
		                if(n + i < len){
		                    if(lists.get(i) == null){
		                        lists.set(i, lists.get(n + i));
		                        lists.remove(n + i);
		                    }else if(lists.get(n + i) == null){
		                        lists.remove(n + i);
		                    }else{
		                        ListNode first = lists.get(i);
		                        ListNode second = lists.get(n + i);
		                        ListNode head = null;
		                        ListNode currentNode = null;
		                        ListNode node;
		                        while(first != null && second != null){
		                            if(first.val < second.val){
		                                node = first;
		                                first = first.next;
		                            }else{
		                                node = second;
		                                second = second.next;
		                            }
		                            if(head == null){
		                                head = node;
		                                currentNode = head;
		                            }else{
		                                currentNode.next = node;
		                                node.next = null;
		                                currentNode = node;
		                            }
		                        }
		                        if(first != null){
		                            currentNode.next = first;
		                        }else{
		                            currentNode.next = second;
		                        } 
		                        lists.set(i, head);
		                        lists.remove(n + i);                        
		                    }
		                }

		                len = lists.size();
		                n = (len + 1) / 2;
		            }
		        }
		        return lists.get(0);
		    }


Merge k Sorted Lists,布布扣,bubuko.com

Merge k Sorted Lists

标签:归并排序   leetcode   array   linkedlist   java   

原文地址:http://blog.csdn.net/u010378705/article/details/31393109

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!