架构师 3 期 3 班 -week8- 作业
作业
有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,也可能不合并,如下图所示的这样。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。
请用代码(或伪代码)描述算法,并给出时间复杂度。
!png
请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图。
作业完成
作业 1
设计
通过迭代器模式设计链表类
将一个链表循环放入 map
迭代另一个链表从 map 总判断是否存在
时间复杂度
O(n) + O(m) = O(n)
注:n、m 都是常量, 所以复杂度不表示为 O(n+m) 直接表示成 O(n)即可
类图
代码实现
定义链表
复制代码
作业代码
复制代码
运行结果
复制代码
作业 2
假设 DataNode1 崩溃,NameNode 与 DataNode1 心跳检测无法连接到
NameNode 会先查找 DataNode1 中存储了哪些数据块,这些数据块的副本在在其他的 DataNode 的位置信息,假设分数据块副本在 node2 与 node3
NameNode 向 DataNode2 与 DataNode3 发送复制副本的请求,复制一份新的副本到 X 结点上,保证每个数据块的副本数量
复制完成后,NameNode 更新数据块的信息记录,完成恢复
版权声明: 本文为 InfoQ 作者【zbest】的原创文章。
原文链接:【http://xie.infoq.cn/article/d3c42d2f4c6285ae066e9372c】。未经作者许可,禁止转载。
评论