[LeetCode OJ]Linked List Cycle
2014-10-21 21:37
197 查看
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
蛮有意思的一道题,就像搜到的一篇文章写得,我也想到了把链表逆置一下,不过实现起来应该蛮麻烦的。
标准做法是使用两个指针,一个每次往前走2步,一个每次往前走1步,如果两个指针相遇,即说明链表有环,时间复杂度为O(N),空间复杂度为O(1)。
这篇文章蛮有帮助,也是按着这个思路实现的代码:经典面试题 之 单链表找环
Follow up:
Can you solve it without using extra space?
蛮有意思的一道题,就像搜到的一篇文章写得,我也想到了把链表逆置一下,不过实现起来应该蛮麻烦的。
/** * 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 == NULL) { return false; } if (head->next == NULL) { return false; } if (head->next == head) { return true; } ListNode *y = head->next; ListNode *x = head->next->next; while(x != NULL && y != NULL) { x = x->next; if (x == NULL) break; x = x->next; y = y->next; if (x == y) break; } return x == y; } };
标准做法是使用两个指针,一个每次往前走2步,一个每次往前走1步,如果两个指针相遇,即说明链表有环,时间复杂度为O(N),空间复杂度为O(1)。
这篇文章蛮有帮助,也是按着这个思路实现的代码:经典面试题 之 单链表找环
相关文章推荐
- LeetCode OJ平台上Linked List Cycle题目用java快慢遍历实现
- 【LeetCode OJ】Linked List Cycle
- LeetCode OJ:Linked List Cycle II(循环链表II)
- LeetCode OJ:Linked List Cycle II
- 【LeetCode OJ】Linked List Cycle II
- LeetCode OJ:Linked List Cycle(链表循环)
- LeetCode OJ:Linked List Cycle
- [LeetCode OJ] Linked List Cycle 解题报告
- 【LeetCode OJ】Linked List Cycle
- LeetCode OJ-- Linked List Cycle II **
- 【LeetCode OJ】Linked List Cycle
- LeetCode OJ - Linked List Cycle II
- LeetCode OJ - Linked List Cycle
- LeetCode OJ 之 Linked List Cycle (判断链表是否有环)
- [LeetCode]题解(python):141-Linked List Cycle
- Linked List Cycle II
- LeetCode: Linked List Cycle
- Linked List Cycle
- 【LeetCode】141 Linked List Cycle (java实现)
- Linked List Cycle