チェーンテーブルのリングの入口ノード


《剣指offer》ブラシノート3
  • 学習コンテンツチェーンテーブルのリングのエントリノード(1)考え方チェーンテーブルが1つの空のチェーンテーブルである場合、または1つのノードのみのチェーンテーブルである場合、答えはNULLである.チェーンテーブルが少なくとも2つのノードを有する線形チェーンテーブルである場合、答えもNULLである.チェーンテーブルにループが含まれている場合、入口ノードのアドレスは必ず現れ、2回しか現れない.特にチェーンテーブル全体がループである場合、入口ノードはこの単一チェーンテーブルの第1番目である1つのノード.チェーンテーブル全体に2回アドレスが表示されるノードを見つけます.構造体ノードのアドレスをキーワードとしてハッシュテーブルを使用できます.ここは既製のset容器を使っていて、素晴らしいです.setコンテナ使用参考:https://www.cnblogs.com/AndyJee/p/4705846.html(2)コード/*struct ListNode{int val;struct ListNode next;ListNode(int x):val(x)、next(NULL){};/class Solution { public: ListNode EntryNodeOfLoop(ListNode pHead) { if(pHeadNULL ||pHead->nextNULL)return NULL;
        set Hash;
        ListNode* pNode=pHead;
        
        while(pNode!=NULL)
        {
          if(Hash.find(pNode)==Hash.end())
          {
            Hash.insert(pNode);
            pNode=pNode->next;
          }
          else
          {
            return pNode;
          }
        }
        return NULL; 
    }
    
    };
  • 参考サイトhttps://cuijiahua.com/blog/2018/02/basis_67.html https://www.cnblogs.com/AndyJee/p/4705846.html