最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java編程實(shí)現(xiàn)遞增排序鏈表的合并

 更新時(shí)間:2017年10月16日 11:17:08   作者:遙同學(xué)  
這篇文章主要介紹了Java編程實(shí)現(xiàn)遞增排序鏈表的合并,兩種方法,代碼分享給大家,供需要的朋友參考。

題目描述

輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。

解答:

/* 
public class ListNode { 
  int val; 
  ListNode next = null; 
 
  ListNode(int val) { 
    this.val = val; 
  } 
}*/ 
public class Solution { 
  public ListNode Merge(ListNode list1,ListNode list2) { 
    if(list1==null)return list2; //判斷到某個(gè)鏈表為空就返回另一個(gè)鏈表。如果兩個(gè)鏈表都為空呢?沒(méi)關(guān)系,這時(shí)候隨便返回哪個(gè)鏈表,不也是空的嗎? 
    if(list2==null)return list1; 
    ListNode list0=null;//定義一個(gè)鏈表作為返回值 
    if(list1.val<list2.val){//判斷此時(shí)的值,如果list1比較小,就先把list1賦值給list0,反之亦然 
      list0=list1; 
      list0.next=Merge(list1.next, list2);//做遞歸,求鏈表的下一跳的值 
      } 
      else{ 
      list0=list2; 
      list0.next=Merge(list1, list2.next); 
      } 
 return list0; 
  } 
} 

簡(jiǎn)化一下,用那個(gè)三目運(yùn)算符:

public class Solution {
	public ListNode Merge(ListNode list1,ListNode list2) {
		if(list1==null) 
		      return list2;
		if(list2==null) 
		      return list1;
		ListNode head;
		list0= list1.val>list2.val?list2:list1;
		list0.next = list1.val>list2.val?Merge(list1,list2.next):Merge(list1.next,list2);
		return list0;
	}
}

據(jù)說(shuō)這道題面試的時(shí)候經(jīng)常考,因?yàn)樗巢瞧鯏?shù)列問(wèn)題一樣有遞歸和非遞歸兩種解法,上面說(shuō)了遞歸的解法,下面再來(lái)講下非遞歸的解法:

/* 
public class ListNode { 
  int val; 
  ListNode next = null; 
  ListNode(int val) { 
    this.val = val; 
  } 
}*/
public class Solution {
	public ListNode Merge(ListNode list1,ListNode list2) {
		if(list1 == null) 
		        return list2;
		if(list2 == null ) 
		        return list1;
		ListNode tmp1 = list1;
		ListNode tmp2 = list2;
		ListNode head = new ListNode(0);
		//這里不能把返回鏈表賦值為null,因?yàn)橄乱恍旭R上就要把它賦值給另一鏈表,得讓它在內(nèi)存里有位置才行 
		ListNode headptr = head;
		while(tmp1 != null && tmp2!=null){
			if(tmp1.val <= tmp2.val) 
			          {
				head.next=tmp1;
				head = head.next;
				tmp1 = tmp1.next;
			} else{
				head.next=tmp2;
				head = head.next;
				tmp2=tmp2.next;
			}
		}
		//其中一個(gè)鏈表已經(jīng)跑到頭之后,繼續(xù)單鏈表的合并 
		while(tmp1 != null){
			head.next = tmp1;
			head = head.next;
			tmp1= tmp1.next;
		}
		while(tmp2 != null){
			head.next = tmp2;
			head = head.next;
			tmp2= tmp2.next;
		}
		head = headptr.next;
		return head;
	}
}

總結(jié)

以上就是本文關(guān)于Java編程實(shí)現(xiàn)遞增排序鏈表的合并的全部?jī)?nèi)容,感興趣的朋友可以參閱:Java編程實(shí)現(xiàn)從尾到頭打印鏈表代碼實(shí)例Java編程刪除鏈表中重復(fù)的節(jié)點(diǎn)問(wèn)題解決思路及源碼分享、Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)以及本站其他相關(guān)專題,如有不足之處,歡迎留言指出,希望對(duì)大家有所幫助。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • SpringBoot部署到騰訊云的實(shí)現(xiàn)示例

    SpringBoot部署到騰訊云的實(shí)現(xiàn)示例

    記錄一下自己第一次部署springboot項(xiàng)目,本文主要介紹了SpringBoot部署到騰訊云的實(shí)現(xiàn)示例,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java類加載器ClassLoader源碼層面分析講解

    Java類加載器ClassLoader源碼層面分析講解

    ClassLoader翻譯過(guò)來(lái)就是類加載器,普通的java開發(fā)者其實(shí)用到的不多,但對(duì)于某些框架開發(fā)者來(lái)說(shuō)卻非常常見(jiàn)。理解ClassLoader的加載機(jī)制,也有利于我們編寫出更高效的代碼。ClassLoader的具體作用就是將class文件加載到j(luò)vm虛擬機(jī)中去,程序就可以正確運(yùn)行了
    2022-09-09
  • Java lock同步鎖使用實(shí)例解析

    Java lock同步鎖使用實(shí)例解析

    這篇文章主要介紹了Java lock同步鎖使用實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java反射機(jī)制的實(shí)現(xiàn)詳解

    Java反射機(jī)制的實(shí)現(xiàn)詳解

    反射主要解決動(dòng)態(tài)編程,即使用反射時(shí),所有的對(duì)象生成是動(dòng)態(tài)的,因此調(diào)用的方法也是動(dòng)態(tài)的.反射可以簡(jiǎn)化開發(fā),但是代碼的可讀性很低
    2013-05-05
  • java http token請(qǐng)求代碼實(shí)例

    java http token請(qǐng)求代碼實(shí)例

    這篇文章主要介紹了java http token請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 基于Maven導(dǎo)入pom依賴很慢的解決方案

    基于Maven導(dǎo)入pom依賴很慢的解決方案

    這篇文章主要介紹了Maven導(dǎo)入pom依賴很慢的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java實(shí)現(xiàn)乘地鐵方案的最優(yōu)選擇(票價(jià),距離)

    java實(shí)現(xiàn)乘地鐵方案的最優(yōu)選擇(票價(jià),距離)

    這篇文章主要介紹了java實(shí)現(xiàn)乘地鐵方案的最優(yōu)選擇(票價(jià),距離),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 解決出現(xiàn) java.lang.ExceptionInInitializerError錯(cuò)誤問(wèn)題

    解決出現(xiàn) java.lang.ExceptionInInitializerError錯(cuò)誤問(wèn)題

    這篇文章主要介紹了解決出現(xiàn) java.lang.ExceptionInInitializerError錯(cuò)誤問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Spring Cloud調(diào)用Ribbon的步驟

    Spring Cloud調(diào)用Ribbon的步驟

    Ribbon是Netflix發(fā)布的開源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法和服務(wù)調(diào)用。本文將講述Spring Cloud調(diào)用Ribbon的方法
    2021-05-05
  • Spring中的SpringData詳細(xì)說(shuō)明

    Spring中的SpringData詳細(xì)說(shuō)明

    這篇文章主要介紹了Spring中的SpringData詳細(xì)說(shuō)明,Spring Data 是Spring 的一個(gè)子項(xiàng)目, 旨在統(tǒng)一和簡(jiǎn)化對(duì)各類型持久化存儲(chǔ), 而不拘泥于是關(guān)系型數(shù)據(jù)庫(kù)還是NoSQL 數(shù)據(jù)存儲(chǔ),需要的朋友可以參考下
    2023-11-11

最新評(píng)論

东海县| 汾阳市| 广宁县| 博湖县| 中卫市| 新龙县| 合山市| 舒城县| 河间市| 于田县| 保康县| 礼泉县| 夏津县| 繁峙县| 大理市| 孟州市| 鲜城| 乐都县| 博客| 凤庆县| 古田县| 东乡族自治县| 京山县| 普兰店市| 金秀| 兴国县| 弥勒县| 冀州市| 新蔡县| 岚皋县| 镶黄旗| 邵阳市| 米脂县| 榆社县| 平潭县| 博白县| 葫芦岛市| 鹤壁市| 扶绥县| 荣昌县| 潼关县|