您的位置:首页 > 其它

Leetcode Linked List Cycle

2016-07-06 02:54 471 查看
Given a linked list, determine if it has a cycle in it.

Follow up:

Can you solve it without using extra space?

Difficulty: Easy

Solution 1: HashSet

/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
HashSet<ListNode> set = new HashSet<ListNode>();
while(head!=null){
if(set.contains(head))
return true;
set.add(head);
head = head.next;
}
return false;
}
}

Solution 2: Two pointers
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
if(head == null || head.next == null) return false;
ListNode curr = head.next;
ListNode currTwo = head.next.next;
while(currTwo != null){
if(curr == currTwo)
return true;
if(currTwo.next == null) return false;
curr = curr.next;
currTwo = currTwo.next.next;
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: