题解 | #链表中环的入口结点#

链表中环的入口结点

https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
#include <set>
class Solution {
public:
    ListNode* EntryNodeOfLoop(ListNode* pHead) {
        std::set<ListNode*> s;
        int len = s.size();
        while (pHead != nullptr) {
            s.insert(pHead);
            if (len == s.size())
                return pHead;
            pHead = pHead->next;
            len = s.size();
        }
        return nullptr;
    }
};

利用了C++标准库容器set的不重复性来判断是否循环到了一个曾经出现过的节点。

如果插入了重复节点,那么set容器的大小不会改变,那么就可以判断此节点就是循环链表的第一个节点,返回其地址即可。

如果没有插入重复节点,那么就返回NULL

全部评论

相关推荐

06-18 16:45
门头沟学院 Java
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
king122:专业技能不要写这么多,熟悉和熟练你经不住问,排版有些难看,中间的空隙搞小一点,项目描述的话感觉是从课程中抄下来的,改一改吧,不然烂大街了,每个项目都写一两点,用什么技术实现了什么难点,然后再写一些数字上去像时间又花了90%这样,这样面试会多一些,如果觉得自己的项目还是不够用的话,我有几个大厂最近做过的实习项目,感兴趣的话可以看我简介中的项目地址
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务