Leetcode_141_Linked List Cycle
2015-01-18 09:52
435 查看
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42833739
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
(1)题意为判断一个链表是否带环。这道题在校招笔试和面试中出现的次数还是比较多的。
(2)要判断是否带环,只需设置两个指针,从链表的起始点开始,分别往后遍历链表中的节点,如果在遍历的过程中两指针相遇,说明链表带有环。但是为了让它们在链表带环的情况下能够相遇,需要对两指针设置不同的步调,一个指针每次前进一步,另一个指针一次前进两步,这样如果前一个指针遍历到最后一个节点为空,则说明链表不带环;否则在遍历的过程中如果第一个指针和第二个指针相遇,则说明链表带环。
(3)希望本文对你有所帮助。
算法代码实现如下:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
(1)题意为判断一个链表是否带环。这道题在校招笔试和面试中出现的次数还是比较多的。
(2)要判断是否带环,只需设置两个指针,从链表的起始点开始,分别往后遍历链表中的节点,如果在遍历的过程中两指针相遇,说明链表带有环。但是为了让它们在链表带环的情况下能够相遇,需要对两指针设置不同的步调,一个指针每次前进一步,另一个指针一次前进两步,这样如果前一个指针遍历到最后一个节点为空,则说明链表不带环;否则在遍历的过程中如果第一个指针和第二个指针相遇,则说明链表带环。
(3)希望本文对你有所帮助。
算法代码实现如下:
/** * @author liqq */ public boolean hasCycle(ListNode head) { if (head == null || head.next == null) return false; ListNode curr = head; ListNode sec = head; while (sec.next != null && sec.next.next != null) { curr = curr.next; sec = sec.next.next; if (curr == sec) { return true; } } return false; }
相关文章推荐
- Leetcode[141]-Linked List Cycle
- LeetCode 141 Linked List Cycle(链表判环)
- [LeetCode]题解(python):141-Linked List Cycle
- 【leetcode】141/142Linked List Cycle(Floyd判圈算法)
- leetcode 141-Linked List Cycle
- 【leetcode】【141】Linked List Cycle
- 【LEETCODE】141-Linked List Cycle
- Leetcode 141 Linked List Cycle
- LeetCode141:Linked List Cycle
- Leetcode 141 Linked List Cycle
- 【leetcode】【单链表】【141】Linked List Cycle
- [Leetcode]#141 Linked List Cycle
- LeetCode - 141/142 - Linked List Cycle
- LeetCode 141 Linked List Cycle
- 【LeetCode-面试算法经典-Java实现】【141-Linked List Cycle(单链表中有环)】
- leetcode(141):Linked List Cycle
- [leetcode 141] Linked List Cycle----判断链表是否为循环链表
- LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II
- 141. Linked List Cycle LeetCode
- <LeetCode OJ> 141 / 142 Linked List Cycle(I / II)