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

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

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


1,成环的链表的图解:

53.png


 

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;
        }
}



目录
相关文章
|
27天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
28 0
|
15天前
|
存储 安全 Java
Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
13 0
|
22天前
|
存储 算法
双链表——“数据结构与算法”
双链表——“数据结构与算法”
|
23天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作
|
27天前
|
算法
算法系列--链表刷题(二)(下)
算法系列--链表刷题(二)(下)
17 0
|
27天前
|
算法
算法系列--链表刷题(二)(上)
算法系列--链表刷题(二)
19 0
|
27天前
|
算法
算法系列--递归(一)--与链表有关(下)
算法系列--递归(一)--与链表有关(下)
21 0
|
1天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
1天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
1天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)