反轉鍊錶總結

2021-07-25 02:37:12 字數 1177 閱讀 8284

##description:

reverse a singly linked list.

##問題描述:

反轉鍊錶。----in place操作,不要新開空間

給定鍊錶的頭結點,得到反轉鍊錶的頭結點。

##解法一(迭代解法–尾插法)

###思路:直觀感覺是將鍊錶的指向全部反向,但是要先用臨時結點儲存後一結點資訊,以免反向後找不到後一節點,迭代之前初始化prev空結點來作為reverse後鍊錶的頭結點。每輪更新prev和head向前移動。

此類解法比較適合於微操的情況, 比如[a, b)這種前閉後開區間…

###code:

public class solution 

listnode prev = null;

while (head != null)

return prev;

}}

##解法二(遞迴解法)

###思路:

假設鍊錶有n個結點,先遞迴顛倒最後n-1個結點,然後小心地將原煉表中的首結點插入到結果鍊錶的末端

利用遞迴遍歷到鍊錶的尾部

###code:

/**

* definition for singly-linked list.

* public class listnode

* }*/public class solution

}

核心思路:

將鍊錶區別[a, b)反轉, 注意是前閉後開.

思路同非遞迴單鏈表反轉.

class

solution

b = b.next;

} listnode newhead =

reverse

(a, b)

; a.next =

reversekgroup

(b, k)

;return newhead;

}private listnode reverse

(listnode a, listnode b)

return pre;

}}

鍊錶反轉總結

遞迴反轉鍊錶 比如現在有這樣乙個鍊錶 k 1 rightarrow k 2 rightarrow rightarrow k rightarrow k rightarrow rightarrow k 若 k 之後的鍊錶都已經完成了反轉,如下 k 1 rightarrow k 2 rightarrow ...

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...

leetcode 反轉鍊錶問題總結

第一次被問反轉鍊錶是被位元組,我沒想出來。後來在劍指offer上面看到了,我沒做出來。在leetcode和牛客上遇見,是那麼的熟悉。今天的每日一題還是思路不清晰。我意識到,我是時候寫點什麼了。希望下次遇到的時候思路清晰,一招斃命。反轉鍊錶i 反轉鍊錶ii 反轉鍊錶i是把整個鍊錶都反轉,相對來說容易一...