算法笔记:力扣142.环形链表返回链表入口

该题目通俗来说就是需要返回节点的入口,这点与判断是否有环不同,有环是通过快慢指针的形式来判断,但当快慢指针相等的时候,此时的节点不一定是环的入口节点。所以这题需要注意。

关键API:

**map.putIfAbsent(key,value):**如果指定的键不存在于map中,则将其映射到给定值。使用方法如下:

复制代码
Map<String, String> map = new HashMap<>();  
String result = map.putIfAbsent("key", "defaultValue");

在这个例子中,如果 "key" 在 map 中不存在,它将被添加,并且方法返回 null;如果 "key" 已存在,方法将返回当前的值。

思路:

使用一个while循环,循环链表,并将当前节点添加进map中,如果没有添加过,则调用**putIfAbsent()方法就会返回null,**如果发现已经添加过当前节点,则代表进入环的入口,方法会返回值,则将当前节点返回。

复制代码
public class Solution {
    public ListNode detectCycle(ListNode head) {
        //需要返回 环的索引
        //哈希表 map  key-节点  value:索引    --以慢指针进行写入map
        //快慢指针判断到环后  将当前节点 在map中寻找
       // 关键方法   map.putIfAbsent("key", "defaultValue");  如果key已经存在 则会返回key对应的值并且不会覆盖 如果不存在则返回null 
     //   ListNode fast=head;
        ListNode slow=head;
        HashMap<ListNode,String> map=new HashMap<>();

        

        while(slow!=null&&slow.next!=null){
     
           String flag=map.putIfAbsent(slow,"1");
           if(flag=="1"){ //则代表添加的元素 在map中已经添加过 代表有环且当前节点就是环节点
            return slow;
           }
             slow=slow.next;

        }
        return null;
    }
}
相关推荐
贝壳69023 分钟前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
文丑颜不良啊1 小时前
LeetCode2901~2920题目解析
java·leetcode
贝壳6901 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
Go Work2 小时前
docker 占满根分区时先分清谁在吃盘
经验分享·笔记
3095566663 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
蒸蒸yyyyzwd3 小时前
从邓明学习的后端笔记
笔记·学习
文丑颜不良啊3 小时前
LeetCode2861~2880题目解析
java·leetcode
岑梓铭3 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
青少儿编程课堂3 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄4 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习