ps:本文是笔者在刷leetcode第141题环形链表时想到的一种新的解题思路,与大家进行分享:
首先看题:
给定一个链表,判断链表中是否有环。
进阶:
你能用 O(1)(即,常量)内存解决此问题吗?
1、hash遍历:
这个题刚一看到最容易想到的就是hash表的方法,遍历所有节点,每次遍历到一个节点时,判断该节点此前是否被访问过。具体地,使用哈希表来存储所有已经访问过的节点。每次我们到达一个节点,如果该节点已经存在于哈希表中,则说明该链表是环形链表,否则就将该节点加入哈希表中。重复这一过程,直到我们遍历完整个链表即可。代码如下:
public class Solution {
public boolean hasCycle(ListNode head) {
Set<ListNode> seen = new HashSet<ListNode>();