一個node連結串列翻轉的面試題
經典面試題總結,或者我寫的過於囉嗦, 表達了一下想法,歡迎大家來留言區討論
下面列舉了兩種解法:
題目
一個node連結串列的值分別為67,0,24,58,31,請把node翻轉
public static class Node {
int val;
Node next = null;
Node(int val) {
this.val = val;
}
}
public static void main(String[] args) {
Node nodeFirst = new Node(67);
nodeFirst.next = new Node(0);
nodeFirst.next.next = new Node(24);
nodeFirst.next.next.next = new Node(58);
nodeFirst.next.next.next.next = new Node(31);
Node node = reverseNodeByNodeMethod(nodeFirst);
while (node != null) {
System.out.println(node.val);
node = node.next;
}
}
```
一種利用node自身的方法翻轉.
public static Node reverseNodeByNodeMethod(Node nodeFirst) {
Node currentNode = nodeFirst;
Node nextNode = null;
Node nextNextNode;
Node newFirstNode = null;
if (currentNode.next != null) {
nextNode = currentNode.next;
}
currentNode.next = null;
while (nextNode != null) {
if (nextNode.next != null) {
nextNextNode = nextNode.next;
} else {
newFirstNode = nextNode;
nextNode.next = currentNode;
break;
}
nextNode.next = currentNode;
currentNode = nextNode;
nextNode = nextNextNode;
}
return newFirstNode;
}
第二種解法,將node所有節點放入stack中,為了防止造成node內部迴圈,所以在stack儲存之後將node.next置為null
public static Node reverseNodeByStack(Node nodeFirst) {
Stack<Node> stack = new Stack<>();
Node node = nodeFirst;
while (node.next != null) {
Node nextNode = node.next;
stack.push(node);
node.next = null;
node = nextNode;
}
Node newFirstNode = node;
while (!stack.isEmpty()) {
node.next = stack.pop();
node = node.next;
}
node.next = null;
return newFirstNode;
}
相關文章
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- [leetcode 25]. K 個一組翻轉連結串列LeetCode
- 連結串列專題——面試中常見的連結串列問題面試
- K個節點翻轉連結串列
- LeetCode 25. k個一組翻轉連結串列LeetCode
- 連結串列中的節點每k個一組翻轉
- LeetCode 92 | 大公司常考的面試題,翻轉連結串列當中指定部分LeetCode面試題
- 面試必備的「反轉連結串列」面試
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- java 反轉單連結串列,偶爾會遇到的面試題Java面試題
- 翻轉連結串列常用寫法
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 反轉一個單連結串列。
- 演算法面試(一) 連結串列演算法面試
- 搞懂單連結串列常見面試題面試題
- 玩轉演算法面試之連結串列演算法面試
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 面試 7:快慢指標法玩轉連結串列演算法面試(一)面試指標演算法
- 面試題35:複雜連結串列的複製面試題
- [每日一題] 第二題:反轉連結串列每日一題
- 連結串列反轉問題
- 定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點函式
- [演算法總結] 17 題搞定 BAT 面試——連結串列題演算法BAT面試
- 乾貨滿滿!!!面試必備OJ題:連結串列篇(一)面試
- [連結串列】2.輸入一個連結串列,反轉連結串列後,輸出新連結串列的表頭。[多益,位元組考過]
- LeetCode每日一題:反轉連結串列(No.206)LeetCode每日一題
- 反轉連結串列系列問題
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- 資料結構和演算法面試題系列—連結串列資料結構演算法面試題
- 演算法入門題:如何反轉一個單向連結串列?演算法
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- 面試-陣列和連結串列的區別面試陣列
- 資料結構連結串列筆試題資料結構筆試
- 反轉連結串列、合併連結串列、樹的子結構
- 常見的連結串列翻轉,位元組跳動加了個條件,面試者高呼「我太難了」| 圖解演算法面試圖解演算法
- 面試中HashMap連結串列成環的問題你答出了嗎面試HashMap