LeetCode刻意练习12--合并k个排序链表

在这里插入图片描述
题目:在这里插入图片描述
思路:
合并k个排序链表,
考虑特殊情况,假如k=0或k=1则没有必要排序;
一般情况,将前两个进行排序,然后将第一个更新,反复用第一个和后面的进行排序。这里是合并两个排序链表的方法。

具体实现如下:

  public ListNode mergeKLists(ListNode[] lists) {
       int k=lists.length;
       if(k==1)
       {
		 return lists[0];
		}

		 if(k>1)
		 {
			 for(int i=1;i<k;i++)
			 {
				 ListNode dummy_node=new ListNode(0);
			     dummy_node.next=null;
			     ListNode tail=dummy_node; 	
			    	while(true)	
			    	{
			    		if(lists[0]==null)
			        	{	
			    			tail.next=lists[i];
			        		break;
			        	}
			        	if(lists[i]==null)
			        	{
			        		tail.next=lists[0];
			        		break;
			        	}
			        	
			    		if(lists[0].val<lists[i].val)
			        	{
			    			tail.next=lists[0];
			        		lists[0]=lists[0].next;
			        		tail=tail.next;
			        	}
			        	else
			        	{
			        		tail.next=lists[i];
			        		lists[i]=lists[i].next;
			        		tail=tail.next;
			        	}
			    	}
			    	
			    	lists[0]=dummy_node.next;	
			 }

			 return lists[0]; 
		 }

		 return null; 
    }
发布了49 篇原创文章 · 获赞 2 · 访问量 884

猜你喜欢

转载自blog.csdn.net/qq_43720551/article/details/104828687