【快乐手撕LeetCode题解系列】—— 环形链表 II

简介: 哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】—— 环形链表 II~ 都是精华内容,可不要错过哟!!!😍😍😍

微信图片_20230427214238.gif

😎博客昵称:博客小梦

😊最喜欢的座右铭:全神贯注的上吧!!!

😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘


微信图片_20230427160707.gif


前言🙌



    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【快乐手撕LeetCode题解系列】—— 环形链表 II~ 都是精华内容,可不要错过哟!!!😍😍😍


环形链表 II🙌


题目内容


微信图片_20230428202020.png


画图分析:😍


微信图片_20230428202116.png


思路分析:😍


  • 1.首先先认真阅读题目,冷静分析解题思路。
  • 2.这道题相对来说比较难理解,需要用到一定的数学思维。
  • 3.先利用快慢指针找到第一次相遇的结点(在有环的情况)。
  • 4.结论是:一个指针从head位置出发,一个指针从meet位置出发,相遇的位置就是入环点。
  • 5.对结论的分析:slow进环后,fast在2圈之内一定能够追上slow。为什么?追击的过程,他们的 距离每一次都是减一,所以是不可能错过的。他们相对距离最多是一圈,6.slow最多走一圈,fast最多走两圈。
  • 7.slow 走的路程:L+X
  • 8.假设slow 进环前,fast在环里面转了N圈(N>=1)
  • 9.fast 走的路程:L+N*C+X


微信图片_20230428202150.png微信图片_20230428202150.png

微信图片_20230428202150.png


源代码分享:😍


struct ListNode *detectCycle(struct ListNode *head) 
{
    struct ListNode *fast = NULL;
    struct ListNode *slow = NULL;
    fast = slow = head;
    while(fast && fast->next)
    {
        fast = fast->next->next;
        slow = slow->next;
        if(slow == fast)
        {
            struct ListNode *meet = fast;
            struct ListNode *phead = head;
            while(meet != phead)
            {
                phead = phead->next;
                meet = meet->next;
            }
            return meet;
        }
    }
    return NULL;
}


程序输出结果验证: 😊


微信图片_20230428202252.png


总结撒花💞


   本篇文章旨在分享【快乐手撕LeetCode题解系列】—— 环形链表 II。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关文章
|
6天前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
16 1
|
13天前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
34 0
Leetcode第21题(合并两个有序链表)
|
13天前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
12 0
LeetCode第二十四题(两两交换链表中的节点)
|
13天前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
32 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
13天前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
27 0
|
13天前
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
16 0
|
13天前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
12 0
|
4月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
4月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
4月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
38 2