狂自私

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

判断链表是否有环

原题连接:https://leetcode-cn.com/problems/linked-list-cycle/description/

我最开始的方法是牺牲空间节约时间(然而是两个都为我的智商白白牺牲了);利用vector存储节点地址,然后遍历链表,利用find函数查找有没有相同的地址;提交之后通过是通过了,但是时间和空间都因为我的智商白白牺牲了。不甘心。不看别人的代码;继续想

想到,我干脆释放内存吧,只要释放出错就是有环了。那么怎么捕捉这个错误呢?这时候就要面向谷歌编程了,发现要用到信号,哎,信号我学过啊,一看,和Linux下的差不多啊。心里一阵窃喜,但是随即抽自己两巴掌,MD,不就是上环嘛,还要用信号捕捉?心灰意冷,还是看别人的代码吧,点开一看,细细一想,顿时惊为天人——我看不懂。哎卧槽,脑子不够用了,用笔代替一下吧,经过我的运算,嗯,,,想出这个方法的人甚叼;简单来说就是有两个人,一个跑得快,一个跑得慢,快的那个人的速度是慢的那个人的两倍,他们从同一个地方跑,如果是直线(无环),那他俩是碰不到一起了,如果转圈(有环),那这俩肯定能碰面啊,一碰面不就是有环了嘛,真是贼聪明;得劲!

---------------------------------------------------------------------------------------------------犹豫着要不要贴我的代码--------------------------------------------------------------------------------------------------------------

不上代码的博客都是耍流氓;我就只贴我的吧,大神的代码就不贴了,免得脏了大神的代码;

static int x = []() {

    ios::sync_with_stdio(false);    // cin与stdin禁止同步

    cin.tie(NULL);                   //cin与cout解除绑定

    return 0;

}();

class Solution {

public:

    bool hasCycle(ListNode *head) {

         if (head == NULL || head->next == NULL)

         {

             return false;

         }

         vector<ListNode*>temp;

         ListNode *before = head, *after = head->next;

         temp.push_back(before);

         while (after)

         {

             before = after;

             after = after->next;

             if (temp.end() == find(temp.begin(), temp.end(), before))

             {

                  temp.push_back(before);

                  continue;

             }

             else

             {

                  return true;

             }

         }

         return false;

    }

};

posted on   狂自私  阅读(127)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示