您的位置:首页 > 其它

Faster\Slower 快慢指针的应用

2015-03-27 09:48 232 查看


leetcode很多题目都是利用快慢指针来解决题目,下面具体讲解下快慢指针。

http://www.cnblogs.com/springfor/p/3869308.html
概念:

快指针在每一步走的步长要比慢指针一步走的步长要多。快指针通常的步速是慢指针的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个时,如果要求删除链表元素时,不要忘记记录应被删除元素的前一个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: