Leetcode Linked List Cycle

xiaoxiao2021-02-28  113

Given a linked list, determine if it has a cycle in it.

Follow up: Can you solve it without using extra space?

解题思路:分别设置两个指针one和two,遍历的时候,one=one->next,two=two->next->next,这样以不同速率进行遍历,如果该列表存在环的话,one和two必然在某个时刻相等,反之,则可以正常遍历完列表,不会出现两个指针相等的情况。

代码如下:

/** * 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) { if(!head) return false; ListNode* cur1=head,*cur2=head; while(cur1->next && cur2->next && cur2->next->next) { cur1 = cur1->next; cur2 = cur2->next->next; if(cur1 == cur2) return true; } return false; } };

转载请注明原文地址: https://www.6miu.com/read-29657.html

最新回复(0)