博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
23. 合并K个排序链表-LeetCode
阅读量:5248 次
发布时间:2019-06-14

本文共 1257 字,大约阅读时间需要 4 分钟。

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

注意判断条件。

 

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

  

转载于:https://www.cnblogs.com/pc-m/p/10883523.html

你可能感兴趣的文章
基本排序
查看>>
一个障碍,就是一个超越自我的契机(转载)
查看>>
SPI ServiceLoader源码分析
查看>>
代码中一些常见的小片段
查看>>
python range( )函数
查看>>
前端非对称加密,后端Node.js解密(jsencrypt插件)(不需要密钥转码)
查看>>
linux 时间操作
查看>>
diverta 2019 Programming Contest 2自闭记
查看>>
周末总结
查看>>
雌激素促进剂 Estro-Mend 90 Capsules1
查看>>
synchronize 关键字原理
查看>>
list删除、集合遍历删除
查看>>
iOS设计模式——委托(delegate)
查看>>
Java ee 之 html/css样式复习
查看>>
为树莓派3B添加LCD1602液晶屏
查看>>
linux下echo命令详解
查看>>
Java基础_正则表达
查看>>
centos 更新linux内核
查看>>
GYM 101964 C(二分答案)
查看>>
python中定义函数时,self怎么理解:
查看>>