写点什么

架构师训练营第八周作业

用户头像
郎哲158
关注
发布于: 2020 年 11 月 15 日



  • 作业2:请画出 DataNode 服务器节点宕机的时候,HDFS 的处理过程时序图。



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

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



package main
import (
"fmt"
"log"
)
type Node struct {
H *Node
E *Node
Value string
}
func MakeHead() *Node {
return &Node{nil, nil, ""}
}
func MakeNode(value string) *Node {
return &Node{nil, nil, value}
}
func (node *Node) add(n *Node) {
for node.E != nil {
node = node.E
}
if node.E == nil {
node.E = n
}
}
func (node *Node) print() {
for node.E != nil {
fmt.Printf("%s", node.Value)
node = node.E
}
fmt.Printf("%s\n", node.Value)
}
func (node *Node) hasMergeElemeent(n *Node) bool {
orgN := n
for node != nil {
n = orgN
for n != nil {
log.Println(node.Value, n.Value)
if node.Value == n.Value {
return true
} else {
n = n.E
}
}
node = node.E
}
return false
}
func main() {
first := MakeHead()
first.Value = "z"
first.add(MakeNode("y"))
first.add(MakeNode("x"))
first.add(MakeNode("b"))
first.add(MakeNode("a1"))
first.print()
second := MakeHead()
second.Value = "z1"
second.add(MakeNode("y"))
second.add(MakeNode("x1"))
second.add(MakeNode("f1"))
second.add(MakeNode("a"))
second.add(MakeNode("d1"))
//second.print()
//has := first.hasMergeElemeent(second)
//log.Println("hasMergeElement:", has)
second.add(MakeNode("b1"))
second.print()
has := first.hasMergeElemeent(second)
log.Println("hasMergeElement:", has)
}



发布于: 2020 年 11 月 15 日阅读数: 23
用户头像

郎哲158

关注

还未添加个人签名 2017.12.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第八周作业