Leetcode - 141. Linked List Cycle
想法:
硬記解法
利用快慢指針的概念
快的一次移動兩個位置
慢的一次移動一個位置
照理來說快的跟慢的不會碰到
如果快慢指針有碰到就表示該 list 有循環
如果快的碰到終點就表示該 list 沒有循環
code:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode Node;
bool hasCycle(Node *head) {
Node* slow = head;
Node* fast = head;
if(head == NULL){
return 0;
}
while(fast->next != NULL){
fast = fast->next->next;
if(!fast){
return 0;
}
slow = slow->next;
if(fast == slow){
return 1;
}
}
return 0;
}
ref:
留言
張貼留言