使用快慢指针,可以在 O(n) 的时间复杂度 O(1) 的空间复杂度完成答题 题型
对于线性表类型的题目,已知线性表中某个结点满足什么条件,找到这个结点,我们就可以用到快慢指针,同时要找的这个结点所具有的特性决定着快指针比慢指针要“快”多少
时间复杂度一般可达 O(n),空间复杂度可达 O(1)
关键字要求线性表中某个结点的结点值
解题步骤若题型符合快慢指针的题型
-
1.设置快指针有多快
快指针比慢指针快多少?这要看题目的条件,比方说如果题目要求链表最中间的结点值,我们可以设置快指针每次移动速度是慢指针的两倍,以后遍历事,慢指针一格一格移就行了,快指针两倍速的移即可。如果题目要求的是链表中倒数第 n 个结点,我们可以将快指针率先移动到正数第 n 个位置,以后慢指针从第 0 个开始,快指针从 n 开始同时遍历即可。
所以快指针怎么设置的问题要看题目要求
-
2.开始同时遍历快慢指针
遍历链表,快慢指针分别往后查找,直到 null,要求的结果就是慢指针指向的结点