鏈表 之 反轉(zhuǎn)鏈表

示例:

輸入: 1->2->3->4->5->NULL

輸出: 5->4->3->2->1->NULL




方法1:三指針?lè)?/p>

設(shè)指針cur指向當(dāng)前節(jié)點(diǎn),反轉(zhuǎn)指針的過(guò)程是改變當(dāng)前節(jié)點(diǎn)的next指針指向當(dāng)前節(jié)點(diǎn)前一個(gè)結(jié)點(diǎn),所以同時(shí)需要保存前一個(gè)節(jié)點(diǎn)和下一個(gè)節(jié)點(diǎn),設(shè)指針pre指向當(dāng)前節(jié)點(diǎn)前一個(gè)節(jié)點(diǎn),指針next指向當(dāng)前節(jié)點(diǎn)下一個(gè)節(jié)點(diǎn)。cur指針最初指向鏈表首節(jié)點(diǎn),next指向cur下一個(gè)節(jié)點(diǎn),pre為空,改變當(dāng)前節(jié)點(diǎn)的next結(jié)點(diǎn)指向pre指向的結(jié)點(diǎn),每這樣操作一次,三個(gè)指針同時(shí)前進(jìn),直到鏈表尾部為止。最后,返回反轉(zhuǎn)后的鏈表表頭指針。

時(shí)間復(fù)雜度:O(n)

空間復(fù)雜度:O(1)



class Solution:

? ? def reverseList(self, head: ListNode) -> ListNode:

? ? ? ? pre = None

? ? ? ? cur = head

? ? ? ? nex = None

? ? ? ? while cur:

? ? ? ? ? ? nex = cur.next

? ? ? ? ? ? cur.next = pre

? ? ? ? ? ?

? ? ? ? ? ? pre = cur

? ? ? ? ? ? cur = nex

? ? ? ? return pre

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 定義一個(gè)函數(shù),輸入一個(gè)鏈表的頭節(jié)點(diǎn),反轉(zhuǎn)該鏈表并輸出反轉(zhuǎn)后鏈表的頭節(jié)點(diǎn)。 參考文章:https://leetcod...
    Spring_java閱讀 185評(píng)論 0 0
  • RT。 核心思想:將前一個(gè)節(jié)點(diǎn)與后一個(gè)節(jié)點(diǎn)斷開(kāi),然后將當(dāng)前節(jié)點(diǎn)指向前節(jié)點(diǎn),鏈表反轉(zhuǎn)。這個(gè)過(guò)程需要節(jié)點(diǎn)引用,來(lái)記錄當(dāng)...
    卡卡西sama閱讀 432評(píng)論 0 0
  • 鏈表這部分最常見(jiàn)的就是鏈表反轉(zhuǎn),這里主要針對(duì)三種題型來(lái)對(duì)鏈表的反轉(zhuǎn)問(wèn)題進(jìn)行了講解。分別對(duì)應(yīng)leetcode中的題目...
    simples閱讀 524評(píng)論 0 0
  • 需求 實(shí)現(xiàn)鏈表的反轉(zhuǎn) 輸入:1->2->3->4->5 輸出:5->4->3->2->1 難點(diǎn) 如果換成數(shù)據(jù)反轉(zhuǎn),...
    Jackie_Zheng閱讀 450評(píng)論 0 10
  • 簡(jiǎn)介 如上圖所所示,每個(gè)節(jié)點(diǎn)包含兩個(gè)成員變量:data和next(這里只是舉一個(gè)最簡(jiǎn)單的例子,實(shí)際上有多少個(gè)成員變...
    Padingpading閱讀 259評(píng)論 0 0

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