美文网首页算法每日一题
算法题:判断链表是否是环形链表

算法题:判断链表是否是环形链表

作者: 死亡中走出来 | 来源:发表于2021-05-26 00:34 被阅读0次

前段时间被问到一个面试题,如何判断一个链表是否是环形链表。

碰到这个问题,我觉得挺逗的,印象里刷过,应该是leetcode上的原题。我当时奔着分析的思路,想了下,这个直接说结果太草率了,倒不如聊聊过程。

首先,链表这个概念是不是知道,大概是一个类似下边的数据结构

struct ListNode{
    Node *next;
    int data;
};

其次,环的问题。这个环,怎么计算呢?我的想法是做个记录,往后遍历,找到之前存储过的记录,就判断有环。代码大概如下:

bool hasCycle(ListNode *head) {
        unordered_set<ListNode*> seen;
        while (head != nullptr) {
            if (seen.count(head)) {
                return true;
            }
            seen.insert(head);
            head = head->next;
        }
        return false;
}

我觉得是OK的,事后,我看了下leetcode刷题记录,应该还用过快慢指针法,代码如下:

 bool hasCycle(ListNode *head) {
        //两个运动员位于同意起点head
        ListNode* faster{ head };  //快的运动员
        ListNode* slower{ head };  //慢的运动员

        if (head == NULL)  //输入链表为空,必然不是循环链表
            return false;

        while (faster != NULL && faster->next != NULL) {
            faster = faster->next->next;  //快的运动员每次跑两步
            slower = slower->next;  //慢的运动员每次跑一步
            if (faster == slower)  //他们在比赛中相遇了
                return true;  //可以断定是环形道,直道不可能相遇
        }
        return false;  //快的运动员到终点了,那就是直道,绕圈跑不会有终点
}

其实,只是看起来代码有点多,原理懂了,适用范围还挺广的。加油,送给还在学习的你!

相关文章

  • 判断一个链表是否为环形链表

    判断一个链表是否为环形链表 思路:通过检测一个节点此前是否已经被访问过来判断链表是否为环形链表。 算法: 我们遍历...

  • 算法题:判断链表是否是环形链表

    前段时间被问到一个面试题,如何判断一个链表是否是环形链表。 碰到这个问题,我觉得挺逗的,印象里刷过,应该是leet...

  • 02-14:leetcode重刷8之哈希与数组

    链表: 判断链表是否环形、是否回文 1、是否链表 #Definitionforsingly-linkedlist....

  • Tourist with Data Structure Seco

    链表 读题要仔细,只看题干,容易死的很惨。 设计链表 环形链表 一般环形链表使用快慢指针方式去做,快慢指针算法。参...

  • Swift - LeetCode - 环形链表 1

    题目 环形链表 1 问题: 给定一个链表,判断链表中是否有环。 说明: 你能否不使用额外空间解决此题? 解题思路:...

  • Swift 环形链表- LeetCode

    题目: 环形链表 给定一个链表,判断链表中是否有环。 进阶你能否不使用额外空间解决此题? 方案: 可以转化为一个...

  • 链表之-环形链表

    在链表中如果有环,则很难遍历结束,最后超时,如果能够判断是否是环形链表,则简单很多给定一个链表,判断链表中是否有环...

  • Java实现链表中环的检测

    链表中环的检测,就是判断链表中是否存在环形结构。带有环形结构的链表如下图所示: image.png 这里提供两种解...

  • 算法学习笔记之初级链表

    记录一下最近刷的比较有意思的题 1. 环形链表 给定一个链表,判断链表中是否有环。进阶你能否不使用额外空间解决此题...

  • 每周 ARTS 第 7 期

    1. Algorithm 141. 环形链表(简单) 描述: 给定一个链表,判断链表中是否有环。 示例: 思路: ...

网友评论

    本文标题:算法题:判断链表是否是环形链表

    本文链接:https://www.haomeiwen.com/subject/xhuhsltx.html