劍指Offer的學習筆記(C#篇)-- 合併兩個排序的鏈表

題目描述

輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,固然咱們須要合成後的鏈表知足單調不減規則。

一 . 題目分析

        根據題意,可得出,該題目要求兩個單增的鏈表合成一條單增的鏈表。函數

        鏈表一:1→5→9→11spa

        鏈表二:2→4→10→12指針

        新鏈表爲:1→2→4→5→9→10→11→12code

二 . 解題思路

        定義兩個鏈表的指針;比較兩個鏈表的頭結點,讓較小的頭結點做爲新鏈表的頭結點;遞歸比較兩個鏈表的其他節點,讓較小的節點做爲上一個新節點的後一個節點。具體實現方法以下:blog

三 . 代碼實現

class Solution
{
    public ListNode Merge(ListNode pHead1, ListNode pHead2)
    {
        // write code here
        //前兩部聲明當有一個列表爲空時,輸出另一個列表:用途,鏈表中最後一個數的輸出
        if (pHead1 == null)
        {
            return pHead2;
        }
        if (pHead2 == null)
        {
            return pHead1;
        }
        //這裏定義一個新的空鏈表,固然不定義也行,隨意。;老實說,寫多了 ,不過可有可無
        ListNode newNode = null;
        //兩個鏈表的首數據大小判斷,判斷結束後,執行遞歸。
        if (pHead1.val <= pHead2.val)
        {
            newNode = pHead1;
            //Merge即爲從新調用該函數,完成遞歸。遞歸必須有終結條件,不然即爲死循環
            //而該函數的終結條件即爲前面開頭的那兩個if語句。
            newNode.next = Merge(pHead1.next,pHead2);
        }
        else
        {
            newNode = pHead2;
            newNode.next = Merge(pHead1,pHead2.next);
        }
        return newNode;
    }
}

Oh baby 情話多說一點遞歸

想我就多看一眼it

表現多一點點io

讓我能 真的看見class

Oh Bye 少說一點List

想陪你不僅一天

多一點 讓我

心甘情願 愛你    --  好聽嗎??

哈哈哈哈哈哈哈哈哈 ........................

相關文章
相關標籤/搜索