法一:快慢指针
class Solution {
public:bool hasCycle(ListNode *head) {ListNode* slow = head, *fast =head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if(slow == fast)return true;} return false;}
};
法二:修改访问过的指针的值
class Solution {
public:bool hasCycle(ListNode *head) {//将访问过的节点值修改为正常节点不可能取到的值int visited = INT_MAX;ListNode* curNode = head;while(curNode != nullptr){if(curNode->val == visited) return true;else{curNode->val = visited;curNode = curNode->next;}}return false;}
};
