Faster\Slower 快慢指针的应用
2017-08-17 20:22
246 查看
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个时,如果要求删除链表元素时,不要忘记记录应被删除元素的前一个元素
Reference: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个时,如果要求删除链表元素时,不要忘记记录应被删除元素的前一个元素
Reference:http://www.cnblogs.com/springfor/p/3869308.html
相关文章推荐
- Faster\Slower 快慢指针的应用
- Faster\Slower 快慢指针的应用
- 快慢指针在链表的应用
- 快慢指针及应用
- leetcode第143题 ( Reorder List),快慢指针的应用
- 快慢指针在链表中的应用
- 关于快慢指针的若干应用详解
- 关于快慢指针的若干应用详解
- 快慢指针在链表的应用
- 快慢指针的概念及其应用
- 指针数组的应用
- 指针的基本应用
- 在MFC类中各种类的指针的获取和应用
- [leetcode]单链表类题目总结(应用双指针)
- C++成员函数指针的应用(转)
- 快慢指针 —— 链表中点
- (摘)指针与应用-------凌风(连载中)
- 实验11——指针的基础应用
- C指针原理(93)-C应用技巧(3)
- Day7-指针的基础详解、二维数组、数组的几种应用、字符串的简单应用.pages