【快乐手撕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。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关文章
|
1月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
36 1
|
1月前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
50 0
Leetcode第21题(合并两个有序链表)
|
1月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
18 0
LeetCode第二十四题(两两交换链表中的节点)
|
1月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
44 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
1月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
78 0
|
1月前
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
21 0
|
1月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
17 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
57 6
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
118 2