Day 41
第133题:
给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。
图中的每个节点都包含它的值 val
(int
) 和其邻居的列表(list[Node]
)。来源:力扣(LeetCode)
1、题意就是copy一个和原图相同的无向图,然后返回;
那么就直接从给出的节点出发,广度优先遍历;
使用哈希表来存储原始节点和被克隆的节点,哈希表中的 key
是原始图中的节点,value
是克隆图中的对应节点;
将题目给定的节点添加到队列。克隆该节点并存储到哈希表中;
每次从队列中取出一个节点,遍历这个节点的所有邻居节点;
如果它被遍历过,那它肯定存在哈希表中,那么就更新这个邻居节点到对应的value中;
如果没被遍历过,就将它存入哈希表的原始节点处,并创建一个新的节点放入克隆节点处;
然后将克隆的邻居节点更新到克隆节点处即可。
第141题:
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该
链表中没有环。来源:力扣(LeetCode)
1、直接使用两个指针,一个指针移动的快,一个指针移动的慢,如果快的指针后移时指向null了,就说明不存在环,返回false;
而如果存在环,那快慢指针在环内一直移动,它们一定会存在相遇的时刻,这时候就说明链表内存在环了,返回true。
2、利用set集合的特点(里面的元素不重复),每次遍历链表节点时,将其地址传入,然后遍历下一个节点;
每次都判断set集合内是否存在这个节点的地址值,存在则说明存在环,不存在就说明不存在环;
返回结果。