⭐️ 往期相关文章
💫链接1:链表分割
💫链接2:链表中倒数第k个结点(快慢指针问题)
💫链接3:leetcode 876.链表的中间结点(快慢指针问题)
💫链接4:leetcode 206.反转链表
💫链接5:leetcode 203.移除链表元素
💫链接6:合并两个有序链表
💫链接7:链表相交
⭐️ 题目描述
🌟 leetcode链接:环形链表
1️⃣ 代码和思路:
思路:快慢指针问题。慢指针走一步 快指针走两步,如果有环 则快指针一定可以追上慢指针。
/*
思路:快慢指针问题。慢指针走一步 快指针走两步,如果有环 则快指针一定可以追上慢指针
*/
bool hasCycle(struct ListNode *head) {
struct ListNode * slow = head;
struct ListNode * fast = head;
// 考虑没有环的情况下,奇数和偶数个链表 fast 结束条件不同
while (fast && fast->next) {
fast = fast->next->next;
slow = slow->next;
if (fast == slow) {
return true;
}
}
return false;
}