C++每日一练10.判断链表中是否有环
Posted 鱼酱2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++每日一练10.判断链表中是否有环相关的知识,希望对你有一定的参考价值。
链表判断是否有环
数学法
* 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)
ListNode* fast = head;
ListNode* slow = head;
while(fast != nullptr && fast->next != nullptr)
fast = fast->next->next;//快指针每次向后走两步
slow = slow->next;//慢指针走一步
if (fast == slow)//快慢指针相遇,有环
return true;
return false;
;
使用map法
struct ListNode
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL)
;
class Solution
public:
bool hasCycle(ListNode *head)
map<ListNode*,int> mp; // 定义一个哈希表存储结点指针
while(head) // 不断遍历结点
if(mp[head]) //如果这个结点出现过
return true;
// 如果没有出现过,那么标记为1,表示出现过了
mp[head]=1;
head=head->next;
return false;
;
以上是关于C++每日一练10.判断链表中是否有环的主要内容,如果未能解决你的问题,请参考以下文章