zoukankan      html  css  js  c++  java
  • 算法基础~链表~链表求环解法一,借助set集合

    算法基础~链表~链表求环解法一,借助set集合

    1,成环的链表的图解:

     2,从图解,我们得知,下个结点指向的结点先前已经遍历过(存在过了)则成环,找到环的起点~ 解释一下why使用到工具set集合?

    because 要找到遍历过的结点它身上没有任何标志,是需要从第一个结点开始循环遍历到它身上的【所以选择放到工具set集合,利用工具set封装好的方法find 遍历】

    3,✿小小 心得:某个结点(身上没有任何标志),比较时又得从第一个结点开始循环,可以借助前人写好的好工具 set集合【封装了删改方法

    所以到这里就知道要使用set集合啦!

    ● 4,思路:【set 集合的元素就是把遍历过的结点指针(地址)“装”进去,然后每次移动到下个结点,

    看它的next指针的指向是否指向已经遍历过的结点(即已经“装”到set中,可以通过遍历set集合中的元素,

    调用set的find 方法进行比较得知)】

    5,上代码,解析思路看2、3、4

    class Solution{
        public:
            ListNode *detectCycle(ListNode *head){
                std::set<ListNode*> node_set;
                while(head){
                    if(node_set.find(head) != node_set.end()){
                        return head;
                    }
                    node_set.insert(head);
                    head = head->next;
                }
                return NULL;
            }
    }
     
  • 相关阅读:
    CAP理论中的P到底是个什么意思?
    网络分区是什么
    SQL中的where条件,在数据库中提取与应用浅析
    golang 数据库开发神器 sqlx使用指南
    2017-07-08( bzip2 bunzip mount)
    2017-07-07(zip unzip gzip gunzip)
    2017-07-06(grep man apropos )
    2017-07-05 (whereis which find)
    001
    009-变量测试
  • 原文地址:https://www.cnblogs.com/shan333/p/15034034.html
Copyright © 2011-2022 走看看