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;
        }
    };
    
  • 相关阅读:
    css列表
    css字体
    css文本
    css背景
    css里的属性
    MySQL语法大全_自己整理的学习笔记
    必看的 jQuery性能优化的38个建议
    p​h​p​异​常​机​制
    常用软件
    php过滤危险html代码
  • 原文地址:https://www.cnblogs.com/virgildevil/p/12196069.html
Copyright © 2011-2022 走看看