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

【【快乐手撕LeetCode题解系列】——移除链表元素

  • 前言
    • 环形链表
      • 画图分析:
      • 思路分析:
      • 源代码分享:
  • 总结撒花

追梦之旅,你我同行

   
博客昵称:博客小梦
最喜欢的座右铭:全神贯注的上吧!!!
作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

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

前言

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

环形链表

题目内容

【快乐手撕LeetCode题解系列】——环形链表_第1张图片

画图分析:

【快乐手撕LeetCode题解系列】——环形链表_第2张图片

【快乐手撕LeetCode题解系列】——环形链表_第3张图片

思路分析:

  • 由图可知,不带环的链表,如果结点个数是奇数个,那么当fast->next为空就可以结束掉循环了;当为偶数个,那么fast = NULL就可以结束循环了。因为满足这两种情况都说明链表不带环。
  • 当出现fast == slow 时,快指针循环一圈后和慢指针相遇,说明链表是带环的。

源代码分享:

//快慢指针
bool hasCycle(struct ListNode *head) 
{
    struct ListNode *fast = head;
    struct ListNode *slow = head;

    while(fast && fast->next)
    {
        slow = slow->next;
        fast = fast->next->next;
        if(fast == slow)
        return true;
    }
    return false;
}

程序输出结果验证:

【快乐手撕LeetCode题解系列】——环形链表_第4张图片

总结撒花

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

你可能感兴趣的:(链表,leetcode,数据结构)