力扣142 环形链表II (hash表、快慢指针(略))

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了,那么就返回这个待添加节点,即这个节点就是入环的第一个节点。
在这里插入图片描述

4.题解方法二:快慢指针(略)

猜你喜欢

转载自blog.csdn.net/ambitionLlll/article/details/113925713
今日推荐