判断链表 LinkList 是否带循环。
Given a linked list, determine if it has a cycle in it.
To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list.
Example 1:
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the second node.

Example 2:
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the first node.

Example 3:
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.

我看到就蒙了 感觉我工作上头基本没有用过linklist这种数据结构。 都是List 或者Dictionary 或者array
那么这个LinkList如果是一个类的话 类的实例(引用类型)可以直接比较吗?我就写了如下的solution 虽然accepted了 但是 faster than
0.86% 感觉这题还得重做。我也看了别人的算法 感觉自己都快不会写代码了。
public bool HasCycle(ListNode head) {
if(head==null) return false;
List<ListNode> nodes=new List<ListNode>();
while(head.next!=null){
if(nodes.Contains(head)){return true;}
else{
nodes.Add(head);
head=head.next;
}
}
return false;
}
Given a linked list, determine if it has a cycle in it.
To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail connects to. If pos is -1, then there is no cycle in the linked list.
Example 1:
Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the second node.

Example 2:
Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where tail connects to the first node.

Example 3:
Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.

我看到就蒙了 感觉我工作上头基本没有用过linklist这种数据结构。 都是List 或者Dictionary 或者array
那么这个LinkList如果是一个类的话 类的实例(引用类型)可以直接比较吗?我就写了如下的solution 虽然accepted了 但是 faster than
0.86% 感觉这题还得重做。我也看了别人的算法 感觉自己都快不会写代码了。
public bool HasCycle(ListNode head) {
if(head==null) return false;
List<ListNode> nodes=new List<ListNode>();
while(head.next!=null){
if(nodes.Contains(head)){return true;}
else{
nodes.Add(head);
head=head.next;
}
}
return false;
}