您的位置:首页 > 其它

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)希望本文对你有所帮助。

算法代码实现如下:

/**
* @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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: