这里写目录标题
1.题目
2.自己初解的思路及问题
这道题是环形链表I基础上的拓展,hash表法和快慢指针法都记得,但是这道题hash表法比较简单,思考一会后能写出,快慢指针相对复杂一些,略。
3.题解方法一:hash表
直接上自己写的代码:
public class Solution {
public ListNode detectCycle(ListNode head) {
//hash表
Set<ListNode> set = new HashSet<>();
ListNode temp = head;
while(temp != null){
if(set.contains(temp)){
return temp;
}
//如果没有包含节点,则添加
set.add(temp);
temp = temp.next;
}
return null;
}
}
这边一开始准备和环形链表I中一样用add的boolean返回值来return temp,没有去想到contains方法,这边要注意。
核心思路应该是遍历链表,用add方法添加所有的节点进hash表,如果这个待添加的节点已经被包含了,即contains了,那么就返回这个待添加节点,即这个节点就是入环的第一个节点。