一直做題都是陣列中點,直接算n/2,但是鍊錶的中點怎麼求出來,我還真沒見過,只能說自己做題太少了。今天做leetcode上的題就遇到了,雖然說簡單,但對我來說這是個新的知識點,我得記錄一下,**如下:
[cpp]view plain
copy
listnode* findmidnode(listnode* head)
return
slow;
//這裡注意的是,如果fast非空,說明
//奇數個節點,slow就是中間那個節點
//如下fast為空,那麼slow就是是線偏右 //的那個節點
}
鍊錶的中點 快慢指標
include include 鍊錶的操作 也可以直接使用stl中的雙向鍊錶結構list。typedef struct listnode listnode,plistnode 快速尋找鍊錶的中間節點 注 對於尋找鍊錶倒數第n個節點也是同樣的流程 listnode findmidnodeinlist ...
快慢指標找煉表中點
今天在刷leetcode的題目 palindrome linked list的時候,想出來的解決演算法的空間複雜度都在o n 不符合題目的限制,在看了幾個部落格以後發現他們的解決方案都用到了乙個方法查詢鍊錶的中點 快慢指標找鍊錶中點法 演算法的思路是 定義乙個快指標fast 乙個慢指標slow 快指...
鍊錶快慢指標
public listnode removenthfromend listnode head,int n 為了找到要刪除的節點的前乙個節點,所以此處讓fast.next null while fast.next null 此時head為倒數第n個節點的前乙個節點。slow.next slow.nex...