Faster\Slower 快慢指针的应用
生活随笔
收集整理的這篇文章主要介紹了
Faster\Slower 快慢指针的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
leetcode很多題目都是利用快慢指針來解決題目,下面具體講解下快慢指針。
?
概念:
快指針在每一步走的步長要比慢指針一步走的步長要多。快指針通常的步速是慢指針的2倍。在循環中的指針移動通常為:faster = faster.next.next, slower = slower.next.
?
應用:
1. 用來找中點或中位數
2. 用來判斷鏈表是否有環以及尋找環入口
3. 題目中含有:倒數第n個,那么設置快指針步長為n,然后快慢指針同時以同一速度走,用慢指針尋找倒數第n個
?
注意:
1. 通常需要特別留意鏈表長度的奇偶性
2. 如果快指針步速為慢指針步速2倍,循環條件為:faster.next!=null&&faster.next.next!=null
3. 當自行設置快指針步長時, 要考慮步長值等于鏈表長度的特殊情況
4. 查找倒數第n個時,如果要求刪除鏈表元素時,不要忘記記錄應被刪除元素的前一個元素
總結
以上是生活随笔為你收集整理的Faster\Slower 快慢指针的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx操作指南之二
- 下一篇: [XPath] XPath 与 lxml