码迷,mamicode.com
首页 > 编程语言 > 详细

23. 合并K个排序链表-LeetCode

时间:2019-05-17 20:45:04      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:height   efi   链表   merge   list   n+1   死循环   highlight   null   

技术图片

心得:仿照归并排序,两两合并,注意更新的判断条件,注意事项看代码!!!

注意判断条件。

 

**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
   public ListNode mergeKLists(ListNode[] lists)
	 {
		 if(lists==null||lists.length==0)
			 return null;
		 int n=lists.length;
		while(n>1) 
		{
		 for(int i=0;i<(n+1)/2;i++)
		 {
			 lists[i]=mergeArr(lists,i,i+(n+1)/2,n);
		 }
		 n=(n+1)/2;
		}
		return lists[0];
	 }
	 public ListNode mergeArr(ListNode[] lists,int a,int b,int n)
			 {
		       if(b>=n)   /////此处n非常重要,一定要记得传入,否则会导致死循环!!!
			  return lists[a];
		      ListNode head=new ListNode(1);
		      ListNode tmp=head;
		      while(lists[a]!=null&&lists[b]!=null)
		      {
		    	  if(lists[a].val>lists[b].val)
		    	  {
		    		  tmp.next=lists[b];
		    		//  tmp=tmp.next;
		    		  lists[b]=lists[b].next;
		    		  tmp=tmp.next;
		    	  }
		    	  else
		    	  {
		    		  tmp.next=lists[a];
		    		 // tmp=tmp.next;
		    		  lists[a]=lists[a].next;
		    		  tmp=tmp.next;
		    	  }
		      }
		      if(lists[a]==null)
		      {
		    	  tmp.next=lists[b];
		      }
		      if(lists[b]==null)
		      {
		    	  tmp.next=lists[a];
		      }
		      return head.next;
			 }
}

  

23. 合并K个排序链表-LeetCode

标签:height   efi   链表   merge   list   n+1   死循环   highlight   null   

原文地址:https://www.cnblogs.com/pc-m/p/10883523.html

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