LeetCode 之 JavaScript 解答第206題 —— 反轉(zhuǎn)鏈表(Reverse Linked List)


Time:2019/4/23
Title: Reverse Linked List
Difficulty: Easy
Author: 小鹿


題目:Reverse Linked List(反轉(zhuǎn)鏈表)

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

Solve:

▉ 問題分析

1)反轉(zhuǎn)鏈表的我們第一能夠想到的方法就是最常用的方法,聲明三個(gè)指針析命,把頭結(jié)點(diǎn)變?yōu)槲步Y(jié)點(diǎn)锰茉,然后下一結(jié)點(diǎn)拼接到尾結(jié)點(diǎn)的頭部萄金,一次類推涩惑。說白了就是就是直接將鏈表指針反轉(zhuǎn)就可以實(shí)現(xiàn)反轉(zhuǎn)鏈表奉呛。

▉ 算法思路

兩種方法:

  • 一般反轉(zhuǎn)
  • 遞歸法

一般解決:

1)定義三個(gè)指針畔勤,分別為 Pnext胯陋、pre蕊温、current,current 存儲(chǔ)當(dāng)前結(jié)點(diǎn)遏乔, pre 指向反轉(zhuǎn)好的結(jié)點(diǎn)的頭結(jié)點(diǎn)义矛,Pnext 存儲(chǔ)下一結(jié)點(diǎn)信息。

2)判斷當(dāng)前結(jié)點(diǎn)是否可以反轉(zhuǎn)(是否為空鏈表或鏈表大于 1 個(gè)結(jié)點(diǎn))?

步驟:

1)Pnext 指針存儲(chǔ)下一結(jié)點(diǎn) 盟萨。

2)當(dāng)前結(jié)點(diǎn)的 next 結(jié)點(diǎn)是否為 null (為 null 的話當(dāng)前結(jié)點(diǎn)就是最后的一個(gè)結(jié)點(diǎn))凉翻,如果為 null,將當(dāng)前節(jié)點(diǎn)賦值為 head 頭指針(斷裂處)捻激。

3)將 pre 指針指向的結(jié)點(diǎn)賦值當(dāng)前節(jié)點(diǎn) current 的下一結(jié)點(diǎn) next制轰。

4)然后讓 pre 指針指向當(dāng)前節(jié)點(diǎn) current。

5)current 繼續(xù)遍歷, 當(dāng)前節(jié)點(diǎn)指向 current 指向 Pnext胞谭。

遞歸法(重點(diǎn)分析):

1)先確定終止條件:當(dāng)下一結(jié)點(diǎn)為 null 時(shí)垃杖,返回當(dāng)前節(jié)點(diǎn);

2)判斷當(dāng)前的鏈表是否為 null丈屹;

3)遞歸找到尾結(jié)點(diǎn)调俘,將其存儲(chǔ)為頭結(jié)點(diǎn)。

4)此時(shí)遞歸的層次是第二層遞歸旺垒,所以要設(shè)置為頭結(jié)點(diǎn)的下一結(jié)點(diǎn)就是當(dāng)前第二層結(jié)點(diǎn)彩库,并且將第二節(jié)點(diǎn)的下一結(jié)點(diǎn)設(shè)置為 bull。

▉ 測(cè)試用例

1)鏈表是空鏈表袖牙。

2)當(dāng)前鏈表的長(zhǎng)度小于等于 1侧巨。

3)輸入長(zhǎng)度大于 1 的鏈表舅锄。

▉ 遞歸法
const reverseList = (head)=>{
       if(head == null || head.next == null){
           return head;
       }else{
           let newhead = reverseList(head.next);
           head.next.next = head;
           head.next = null;
           return newhead;
       }
   }
▉ 性能分析
  • 時(shí)間復(fù)雜度:O(n)鞭达。只需遍歷整個(gè)鏈表就可以完成反轉(zhuǎn)司忱,時(shí)間復(fù)雜度為 O(n)。
  • 空間復(fù)雜度:O(1)畴蹭。只需要常量級(jí)的空間坦仍,空間復(fù)雜度為 O(1)。



歡迎一起加入到 LeetCode 開源 Github 倉庫叨襟,可以向 me 提交您其他語言的代碼繁扎。在倉庫上堅(jiān)持和小伙伴們一起打卡,共同完善我們的開源小倉庫糊闽!
Github:https://github.com/luxiangqiang/JS-LeetCode
歡迎關(guān)注我個(gè)人公眾號(hào):「一個(gè)不甘平凡的碼農(nóng)」梳玫,記錄了自己一路自學(xué)編程的故事。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末右犹,一起剝皮案震驚了整個(gè)濱河市提澎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌念链,老刑警劉巖盼忌,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掂墓,居然都是意外死亡谦纱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門君编,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跨嘉,“玉大人,你說我怎么就攤上這事啦粹〕ズ桑” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵唠椭,是天一觀的道長(zhǎng)跳纳。 經(jīng)常有香客問我,道長(zhǎng)贪嫂,這世上最難降的妖魔是什么寺庄? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮力崇,結(jié)果婚禮上斗塘,老公的妹妹穿的比我還像新娘。我一直安慰自己亮靴,他們只是感情好馍盟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茧吊,像睡著了一般贞岭。 火紅的嫁衣襯著肌膚如雪八毯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天瞄桨,我揣著相機(jī)與錄音话速,去河邊找鬼。 笑死芯侥,一個(gè)胖子當(dāng)著我的面吹牛泊交,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柱查,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼廓俭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了唉工?” 一聲冷哼從身側(cè)響起白指,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酵紫,沒想到半個(gè)月后告嘲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奖地,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年橄唬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片参歹。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仰楚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犬庇,到底是詐尸還是另有隱情僧界,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布臭挽,位于F島的核電站捂襟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欢峰。R本人自食惡果不足惜葬荷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纽帖。 院中可真熱鬧宠漩,春花似錦、人聲如沸懊直。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽室囊。三九已至雕崩,卻和暖如春凝危,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晨逝。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懦铺,地道東北人捉貌。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冬念,于是被迫代替她去往敵國(guó)和親趁窃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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