算法基础~链表~链表求环解法一,借助set集合
2021/7/20 22:07:05
本文主要是介绍算法基础~链表~链表求环解法一,借助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; } }
这篇关于算法基础~链表~链表求环解法一,借助set集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南
- 2024-11-16MyBatisX资料:新手入门与初级教程
- 2024-11-16RESTful接口资料详解:新手入门指南