写点什么

第八周 - 作业 1

发布于: 2020 年 12 月 27 日

1、作业 1

有两个单向链表(链表长度分别为 m,n),这两个单向链表有可能在某个元素合并,也可能不合并,如下图所示的这样。现在给定两个链表的头指针,在不修改链表的情况下,如何快速地判断这两个链表是否合并?如果合并,找到合并的元素,也就是图中的 x 元素。

请用代码(或伪代码)描述算法,并给出时间复杂度。


package main
import ("fmt")

type LinkList struct { Val int Next *LinkList}
func findMerged(l1,l2 *LinkList) *LinkList { dict := make(map[*LinkList]bool) head := l1 for head != nil{ dict[head] = true head = head.Next } head = l2 for head != nil{ if dict[head] { return head } head = head.Next } return nil}

func main() { a := &LinkList{1,nil} b := &LinkList{2,a} c := &LinkList{3,b} d := &LinkList{4,c} x := &LinkList{6,b} y := &LinkList{7,x}
fmt.Printf("value of item found %+v", findMerged(d,y))}
复制代码



2、作业 2

画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图

NameNode 存储着所有 DataNode 上存储的数据编号(块 ID)。当 NameNode 失去一块 DataNode 的心跳,断定它已经宕机不可用的时候,就会检查这些块 ID 有哪些,同时检查还在哪些 DataNode 存储着这些块,然后就给这些 DataNode 发指令,告诉它把这些数据在其他 DataNode 上重新备份,维持一份数据的备份的数量不变


用户头像

还未添加个人签名 2019.09.13 加入

还未添加个人简介

评论

发布
暂无评论
第八周-作业1