[劍指offer] 鏈表04:合并兩個(gè)排序的鏈表

題目描述

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

解題思路

兩種解法:遞歸和非遞歸

參考代碼

  • 結(jié)構(gòu)定義
public class ListNode {
  int val; //數(shù)據(jù)域
  ListNode next = null; //指針域 

  public ListNode(int val) {
    this.val=val;
  }
}
  • 代碼(非遞歸)
public class Demo4 {
  public static ListNode Merge(ListNode list1,ListNode list2) {
    
    if(list1==null) {
        return list2;
    }else if(list2==null) {
        return list1;
    }
    
    ListNode newList = null;
    if(list1.val <= list2.val) {
        newList = list1;
        list1 = list1.next;
    }else {
        newList = list2;
        list2 = list2.next;
    }
    
    ListNode cur = newList;
    while(list1!=null && list2!=null) {
        if(list1.val < list2.val) {
            cur.next = list1;
            list1 = list1.next;
        }else {
            cur.next = list2;
            list2 = list2.next;
        }
        cur = cur.next;
    }
    
    if(list1 == null) {
        cur.next = list2;
    }else if(list2 == null) {
        cur.next = list1;
    }
    
    return newList;
  }
}
  • 測試主方法
public static void main(String[] args) {

    ListNode listNode = new ListNode(1);
    ListNode listNode2 = new ListNode(3);
    ListNode listNode3 = new ListNode(5);
    ListNode listNode4 = new ListNode(7);
    listNode3.next = listNode4;
    listNode2.next = listNode3;
    listNode.next = listNode2;
    
    ListNode listNode0 = new ListNode(2);
    ListNode listNode22 = new ListNode(4);
    ListNode listNode33 = new ListNode(6);
    ListNode listNode44 = new ListNode(8);
    listNode33.next = listNode44;
    listNode22.next = listNode33;
    listNode0.next = listNode22;
    ListNode merge = Merge(listNode,listNode0);
    
    while (merge != null) {
        System.out.println(merge.val);
        merge = merge.next;
    }
}
  • 輸出結(jié)果
1
2
3
4
5
6
7
8
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述 輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 解題思路 ...
    繁著閱讀 246評論 0 0
  • 前言 2. 實(shí)現(xiàn) Singleton 3. 數(shù)組中重復(fù)的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 3,162評論 0 1
  • 題目:輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 代碼一: 這是...
    qming_c閱讀 244評論 0 0
  • 題目 輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 思路 基本思路...
    Joseph_Chu閱讀 188評論 0 0
  • 劍指Offer筆試題(1) 題目來源:??途W(wǎng) 題目一 調(diào)整數(shù)組序列使奇數(shù)位于偶數(shù)序列前 描述: 輸入一個(gè)整數(shù)數(shù)組...
    Torang閱讀 1,509評論 0 6

友情鏈接更多精彩內(nèi)容