zoukankan      html  css  js  c++  java
  • 剑指OFFER 链表中环的入口结点

    剑指OFFER 链表中环的入口结点

    如果出现了环,说明存在后面的结点指向前面的结点,如果对此链表进行遍历,那么最终会遍历到之前已经访问过的元素.于是我使用map来记录前面所有结点被访问的次数,如果首次访问到了访问次数不等于0的结点(之前被访问过的结点),说明找到了环的入口结点.

    思考:

    为什么用map而不通过修改val的值来标记是否已经被访问过?

    保证链表存储的值的任意性,增强程序的健壮性

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
            val(x), next(NULL) {
        }
    };
    */
    class Solution {
    public:
        map<ListNode*,int> m;
        ListNode* EntryNodeOfLoop(ListNode* pHead)
        {
            ListNode* node = pHead;
            while(node != NULL)
            {
                if(m[node] != 0)
                {
                    return node;
                }
                m[node]++;
                node = node->next;
            }
            return NULL;
        }
    };
    
  • 相关阅读:
    八、分组
    七、select使用
    六、SQL基础应用
    五、修改MySQL密码
    side Effect
    js函数式编程
    React生命周期
    Portals
    git使用技巧
    函数式编程
  • 原文地址:https://www.cnblogs.com/virgildevil/p/12196069.html
Copyright © 2011-2022 走看看