文章目录
- 1. 题目来源
- 2. 题目解析
1. 题目来源
链接:141. 环形链表
题单:
-
- 链表、二叉树与一般树(前后指针/快慢指针/DFS/BFS/直径/LCA)
- §1.6 快慢指针
2. 题目解析
思路:
- 用相对速度思考快慢指针的问题会简化很多思维工作量。
- 快指针于慢指针的相对速度是 1,那么追赶的话最终肯定是能追上慢指针并相遇的。
- 所以,终究还是一个快慢指针问题。
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:bool hasCycle(ListNode *head) {auto a = head, b = head;while (b && b->next) {a = a->next;b = b->next->next;if (a == b) return true;}return false;}
};