Leetcode 經典題目反轉鍊錶三部曲

2021-09-27 10:18:24 字數 1237 閱讀 5837

這個題目在面試中是會考察的,因為**量很少,要掌握

class solution

return pre;

}}

這個是要直接寫出來的,包括手寫

這個有種種邊界條件要考慮,是不容易一次性就正確的寫出來的。

優雅的**是封裝乙個函式,反轉從begin節點到end節點之間的節點。

這裡要注意,反轉的鍊錶是不包括begin和end,原因是反轉中間鍊錶會影響到兩邊,為了**的高內聚,低耦合,應該把兩邊的begin和end也加上

public listnode reverse(listnode begin, listnode end)
這裡的反轉邏輯如下

/* 1->2->3->4->5

1<- 2<- 3 <- 4 ->5

| | | |

begin first pre cur

1->4->3->2->5

*/

除了中間反轉邏輯,還有前後的處理,為了檢驗這段**的魯棒性,可以傳入dummy和null來驗制反轉整個鍊錶

public listnode reverse(listnode begin, listnode end)

begin.next = pre;

first.next = cur;

return first;

}

這個是最難的題目,首先要實現上面的函式,同時還要有遍歷邏輯,要邊畫圖邊思考,面試中做出來還是不容易。

class solution 

else

}return dummy.next;}/*

翻轉begin到end之間的鍊錶(不包括begin和end, 並返回最後乙個節點)

輸入: 1->2->3->4->5->null, m = 2, n = 4

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

1 1<-2<-3<-4->5

*/public listnode reverse(listnode begin, listnode end)

begin.next = pre;

first.next = cur;

return first;

}}

leetcode鍊錶題目之206 反轉鍊錶

題目 方法一 在遍歷列表時,將當前節點的 next 指標改為指向前乙個元素。由於節點沒有引用其上乙個節點,因此必須事先儲存其前乙個元素。在更改引用之前,還需要另乙個指標來儲存下乙個節點。不要忘記在最後返回新的頭引用!definition for singly linked list.struct l...

leetcode經典題目 word search

題目 給出乙個二維字元陣列和乙個單詞,判斷單詞是否在陣列 現,單詞由相鄰單元格的字母連線而成,相鄰單元指的是上下左右相鄰。同一單元格的字母不能多次使用。例如 給出的字元陣列 abce sfcs adee 單詞 abcced 返回 true,單詞 see 返回 true,單詞 abcb 返回 fals...

題目1518 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...