91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Java怎么合并遞增排序鏈表

發布時間:2020-12-08 16:53:40 來源:億速云 閱讀:178 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關利用Java怎么合并遞增排序鏈表,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

題目描述

輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。

解答:

/* 
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 list0=null;//定義一個鏈表作為返回值 
    if(list1.val<list2.val){//判斷此時的值,如果list1比較小,就先把list1賦值給list0,反之亦然 
      list0=list1; 
      list0.next=Merge(list1.next, list2);//做遞歸,求鏈表的下一跳的值 
      } 
      else{ 
      list0=list2; 
      list0.next=Merge(list1, list2.next); 
      } 
 return list0; 
  } 
} 

簡化一下,用那個三目運算符:

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&#63;list2:list1;
		list0.next = list1.val>list2.val&#63;Merge(list1,list2.next):Merge(list1.next,list2);
		return list0;
	}
}

據說這道題面試的時候經常考,因為它跟斐波那契數列問題一樣有遞歸和非遞歸兩種解法,上面說了遞歸的解法,下面再來講下非遞歸的解法:

/* 
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,因為下一行馬上就要把它賦值給另一鏈表,得讓它在內存里有位置才行 
		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;
			}
		}
		//其中一個鏈表已經跑到頭之后,繼續單鏈表的合并 
		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;
	}
}

上述就是小編為大家分享的利用Java怎么合并遞增排序鏈表了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂伦春自治旗| 开鲁县| 台东县| 内丘县| 友谊县| 同江市| 仙游县| 玉山县| 无极县| 河池市| 绍兴市| 金堂县| 昌图县| 弥勒县| 天气| 定陶县| 彭泽县| 犍为县| 宜宾市| 花莲市| 奉新县| 衡阳市| 平武县| 宁明县| 和田市| 迁安市| 沽源县| 东台市| 中方县| 临沭县| 漳浦县| 宁武县| 孙吴县| 湖口县| 桦南县| 商河县| 太湖县| 彩票| 沁阳市| 浑源县| 浦北县|