PHP實(shí)現(xiàn)合并兩個(gè)排序鏈表的方法
本文實(shí)例講述了PHP實(shí)現(xiàn)合并兩個(gè)排序鏈表的方法。分享給大家供大家參考,具體如下:
問題
輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。
解決思路
簡單的合并排序。由于兩個(gè)數(shù)列本來就是遞增的,所以每次將兩個(gè)數(shù)列中較小的部分拿過來就可以了。
實(shí)現(xiàn)代碼
<?php /*class ListNode{ var $val; var $next = NULL; function __construct($x){ $this->val = $x; } }*/ function Merge($pHead1, $pHead2) { if($pHead1 == NULL) return $pHead2; if($pHead2 == NULL) return $pHead1; $reHead = new ListNode(); if($pHead1->val < $pHead2->val){ $reHead = $pHead1; $pHead1 = $pHead1->next; }else{ $reHead = $pHead2; $pHead2 = $pHead2->next; } $p = $reHead; while($pHead1&&$pHead2){ if($pHead1->val <= $pHead2->val){ $p->next = $pHead1; $pHead1 = $pHead1->next; $p = $p->next; } else{ $p->next = $pHead2; $pHead2 = $pHead2->next; $p = $p->next; } } if($pHead1 != NULL){ $p->next = $pHead1; } if($pHead2 != NULL) $p->next = $pHead2; return $reHead; }
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
- php數(shù)組和鏈表的區(qū)別總結(jié)
- PHP實(shí)現(xiàn)鏈表的定義與反轉(zhuǎn)功能示例
- PHP雙向鏈表定義與用法示例
- php數(shù)據(jù)結(jié)構(gòu)之順序鏈表與鏈?zhǔn)骄€性表示例
- php數(shù)組指針操作詳解
- php each 返回?cái)?shù)組中當(dāng)前的鍵值對并將數(shù)組指針向前移動(dòng)一步實(shí)例
- PHP7生產(chǎn)環(huán)境隊(duì)列Beanstalkd用法詳解
- php使用redis的有序集合zset實(shí)現(xiàn)延遲隊(duì)列應(yīng)用示例
- php+redis實(shí)現(xiàn)消息隊(duì)列功能示例
- PHP如何通過帶尾指針的鏈表實(shí)現(xiàn)''隊(duì)列''
相關(guān)文章
php使用CutyCapt實(shí)現(xiàn)網(wǎng)頁截圖保存的方法
這篇文章主要介紹了php使用CutyCapt實(shí)現(xiàn)網(wǎng)頁截圖保存的方法,結(jié)合實(shí)例形式詳細(xì)分析了CutyCapt的下載、安裝及php使用CutyCapt進(jìn)行截圖與保存的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10php實(shí)現(xiàn)使用正則將文本中的網(wǎng)址轉(zhuǎn)換成鏈接標(biāo)簽
本文給大家分享一段php中使用正則表達(dá)式將網(wǎng)址轉(zhuǎn)換成A鏈接的函數(shù)代碼,十分簡潔實(shí)用,這里推薦給大家2014-12-12PHP獲取文件擴(kuò)展名的方法實(shí)例總結(jié)
這篇文章主要介紹了PHP獲取文件擴(kuò)展名的方法,結(jié)合實(shí)例形式總結(jié)了6種常用的文件擴(kuò)展名獲取方法,代碼備有較為詳細(xì)的注釋便于理解,需要的朋友可以參考下2017-06-06