《劍指Offer》-25.合并兩個排序的鏈表

題干

輸入兩個遞增排序的鏈表梢卸,合并這兩個鏈表并使新鏈表中的節(jié)點仍然使遞增排序的犀勒。例如輸入下圖中的鏈表1和鏈表2蕴纳,則合并之后的升序鏈表如鏈表3所示会油。鏈表節(jié)點定義如下:

class ListNode {
    int val;
    ListNode next;
}

鏈表1

graph LR
1-->3
3-->5
5-->7

鏈表2

graph LR
2-->4
4-->6
6-->8

鏈表3

graph LR
1-->2
2-->3
3-->4
4-->5
5-->6
6-->7
7-->8

解題思路

取出兩個鏈表的頭節(jié)點進行比較,取值小的的頭節(jié)點袱蚓,將其合并到最終鏈表的尾部钞啸,然后比較剩余節(jié)點構(gòu)成的鏈表的頭節(jié)點几蜻,一直比較的沒有可以比較的節(jié)點時終止喇潘。

代碼實現(xiàn)

<?php

class ListNode
{
    private $val;
    private $next;

    public function __set($name, $value)
    {
        $this->$name = $value;
    }

    public function __get($name)
    {
        return $this->$name;
    }
}

function getList1()
{

    $node1 = new ListNode();
    $node1->val = 1;
    $node2 = new ListNode();
    $node2->val = 3;
    $node1->next = $node2;
    $node3 = new ListNode();
    $node3->val = 5;
    $node2->next = $node3;
    $node4 = new ListNode();
    $node4->val = 7;
    $node3->next = $node4;

    return $node1;
}

function getList2()
{
    $node1 = new ListNode();
    $node1->val = 2;
    $node2 = new ListNode();
    $node2->val = 4;
    $node1->next = $node2;
    $node3 = new ListNode();
    $node3->val = 6;
    $node2->next = $node3;
    $node4 = new ListNode();
    $node4->val = 8;
    $node3->next = $node4;

    return $node1;
}

function mergeList($head1, $head2)
{
    if ($head1 == null) {
        return $head2;
    }

    if ($head2 == null) {
        return $head1;
    }

    $mergeHead = null;
    if ($head1->val < $head2->val) {
        $mergeHead = $head1;
        $mergeHead->next = mergeList($head1->next, $head2);
    } else {
        $mergeHead = $head2;
        $mergeHead->next = mergeList($head1, $head2->next);
    }

    return $mergeHead;
}

var_dump(mergeList(getList1(), getList2()));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市梭稚,隨后出現(xiàn)的幾起案子颖低,更是在濱河造成了極大的恐慌,老刑警劉巖弧烤,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忱屑,死亡現(xiàn)場離奇詭異,居然都是意外死亡暇昂,警方通過查閱死者的電腦和手機莺戒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來急波,“玉大人从铲,你說我怎么就攤上這事〕文海” “怎么了名段?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵阱扬,是天一觀的道長。 經(jīng)常有香客問我伸辟,道長麻惶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任信夫,我火速辦了婚禮窃蹋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘静稻。我一直安慰自己脐彩,他們只是感情好,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布姊扔。 她就那樣靜靜地躺著惠奸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恰梢。 梳的紋絲不亂的頭發(fā)上佛南,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機與錄音嵌言,去河邊找鬼嗅回。 笑死,一個胖子當著我的面吹牛摧茴,可吹牛的內(nèi)容都是我干的绵载。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼苛白,長吁一口氣:“原來是場噩夢啊……” “哼娃豹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起购裙,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤懂版,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后躏率,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躯畴,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年薇芝,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓬抄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡夯到,死狀恐怖嚷缭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黄娘,我是刑警寧澤峭状,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布克滴,位于F島的核電站,受9級特大地震影響优床,放射性物質(zhì)發(fā)生泄漏劝赔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一胆敞、第九天 我趴在偏房一處隱蔽的房頂上張望着帽。 院中可真熱鬧,春花似錦移层、人聲如沸仍翰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽予借。三九已至,卻和暖如春频蛔,著一層夾襖步出監(jiān)牢的瞬間灵迫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工晦溪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瀑粥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓三圆,卻偏偏與公主長得像狞换,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舟肉,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 搞懂單鏈表常見面試題 Hello 繼上次的 搞懂基本排序算法修噪,這個一星期,我總結(jié)了度气,我所學習和思考的單鏈表基礎(chǔ)知識...
    醒著的碼者閱讀 4,579評論 1 45
  • 下面是我整理的割按,劍指Offer前五章所有的題目以及相關(guān)題和拓展題的題目和答案膨报。代碼的話放在github上磷籍,您可以下...
    kikido閱讀 1,031評論 0 1
  • 1 序 2016年6月25日夜,帝都现柠,天下著大雨院领,拖著行李箱和同學在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,081評論 0 12
  • 筆醉填金縷够吩。遍思吟比然,白箋勝雪,斷章難賦周循∏糠ǎ回首煙塵撲霜面万俗,非是流年輕誤∫樱苦為樂闰歪,中應(yīng)有語。樓外花零云蔽月蓖墅,但無情库倘,一...
    50dfdb13afb9閱讀 290評論 0 1