Day 41

第133题:

给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。

图中的每个节点都包含它的值 valint) 和其邻居的列表(list[Node])。来源:力扣(LeetCode)

1、题意就是copy一个和原图相同的无向图,然后返回;

  那么就直接从给出的节点出发,广度优先遍历;

  使用哈希表来存储原始节点和被克隆的节点,哈希表中的 key 是原始图中的节点,value 是克隆图中的对应节点;

  将题目给定的节点添加到队列。克隆该节点并存储到哈希表中;

  每次从队列中取出一个节点,遍历这个节点的所有邻居节点;

  如果它被遍历过,那它肯定存在哈希表中,那么就更新这个邻居节点到对应的value中;

  如果没被遍历过,就将它存入哈希表的原始节点处,并创建一个新的节点放入克隆节点处;

  然后将克隆的邻居节点更新到克隆节点处即可。

  

第141题:

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该

链表中没有环。来源:力扣(LeetCode)

1、直接使用两个指针,一个指针移动的快,一个指针移动的慢,如果快的指针后移时指向null了,就说明不存在环,返回false;

  而如果存在环,那快慢指针在环内一直移动,它们一定会存在相遇的时刻,这时候就说明链表内存在环了,返回true。

  

2、利用set集合的特点(里面的元素不重复),每次遍历链表节点时,将其地址传入,然后遍历下一个节点;

  每次都判断set集合内是否存在这个节点的地址值,存在则说明存在环,不存在就说明不存在环;

  返回结果。

  

原文地址:https://www.cnblogs.com/liang-yi-/p/13493859.html