LeetCode —— 142. 环形链表 II

在这里插入图片描述
请添加图片描述

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️
💥个人主页:🔥🔥🔥大魔王🔥🔥🔥
💥所属专栏:🔥魔王的修炼之路–力扣🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞👍和关注💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。

142. 环形链表 II

142. 环形链表 II

题目:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改 链表。在这里插入图片描述在这里插入图片描述在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

//方法1(C语言)(注意函数名、封装的类名这些的可能和C++的不一样)
// //无环部分为L,环整体为n,开始有环到相遇点距离为x,剩下的部分距离为c(也就是n-x)。
//  //规律:从相遇点和起始地址开始一起走,最后会在开始有环的地方相遇:根据快指针是慢指针路程的二倍,2(L+x) =L+a*n,a>=1,a为整数,化简得L=a*n+x=(a-1)*n+c,所以让两个指针同时从链表开始位置和快慢指针相遇位置开始走,最后会在开始有环的位置相遇,因为不管(a-1)*n这个怎么样,因为不管转了几圈最后还是回到了相遇位置,最后还是剩下c这一段路程,就是说最后都会是两个指针距离环开始位置为c,走完c这一段路程相遇在环开始的位置。简单的画图举例弄不出来规律,必须通过公式计算出来规律。
// struct ListNode *detectCycle(struct ListNode *head) 
// {
//     struct ListNode * fast,* slow,* meet,*start;
//     meet = NULL;
//     start = head;
//     fast = slow = head;
//     while(fast!=NULL&&fast->next!=NULL)
//     {
//         fast = fast->next->next;
//         slow = slow->next;
//         if(fast==slow)
//             {
//                 meet = slow;
//                 break;
//             }
//     }
//     if(meet==NULL)
//         return meet;
//     while(meet!=start)
//     {
//         meet = meet->next;
//         start = start->next;
//     }
//     return meet;
// }

//方法2(C++):暴力查找
class Solution {
public:
    ListNode* detectCycle(ListNode *head) {
        ListNode* cur = head;
        set<ListNode*> k;
        while(cur)
        {
            if(k.find(cur) != k.end())
            {
                return cur;
            }
            k.insert(cur);
            cur = cur->next;
        }
        return nullptr;
    }
};
  • 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。

🌈专栏推荐
😈魔王的修炼之路–C语言
😈魔王的修炼之路–数据结构
😈魔王的修炼之路–C++
😈魔王的修炼之路–QT
😈魔王的修炼之路–算法
😈魔王的修炼之路–力扣
😈魔王的修炼之路–牛客
😈魔王的修炼之路–剑指offer
😈魔王的修炼之路–Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大魔王(已黑化)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值