1: /**
2: * Definition for singly-linked list.
3: * struct ListNode {
4: * int val;
5: * ListNode *next;
6: * ListNode(int x) : val(x), next(NULL) {}
7: * };
8: */
9: class Solution {
10: public:
11: bool hasCycle(ListNode *head) {
12: if (head == NULL || head->next == NULL) return false;
13: ListNode *slow = head;
14: ListNode *fast = head->next;
15: while (fast && fast->next) {
16: slow = slow->next;
17: fast = fast->next->next;
18: if (slow == fast) return true;
19: }
20: return false;
21: }
22: };
Saturday, August 6, 2016
141. Linked List Cycle
To find a cycle in the linked list, we can have two pointers, one of which moves one steps once and the other moves two steps once. If the fast pointer reaches NULL, it means there is no cycle, otherwise, the fast pointer will capture the slow pointer again.
Labels:
amazon,
cycle,
leetcode,
linked list,
two pointers
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment