讨论/算法和数据结构/哪位可以作出这个算法题目?/
哪位可以作出这个算法题目?

字节一面题目:
这题目看着简单,但就是不知道怎么写出来,哪位不吝赐教,写下你的代码
WechatIMG3.png

展开讨论
前端coder发起于 2020-04-25
var list = [
  'h1', 'h2', 'h3', 'h3', 'h2', 'h3',
]
var shunxu = [
  'h4', 'h3', 'h2', 'h1'
]

class Node {
  constructor (name) {
    this.name = name
    this.child = []
  }
}

var temp = {}
var h1 = new Node('h1')
for (let i = 0; i < list.length; i++) {
  var key = list[i];
  temp[key] = new Node(key)  // 创建对应的对象和key  如果有了直接就覆盖就行
  var shunxuIndex = shunxu.indexOf(key)  // 找出顺序的 位置
  for (let j = shunxuIndex + 1; j < shunxu.length; j++) {  // 找到了以后 找出最近的父节点 推如父节点的 对应的子数组中
    if (shunxu[j] in temp) {
      temp[shunxu[j]]['child'] = temp[shunxu[j]]['child'] || []
      temp[shunxu[j]]['child'].push(temp[key])
      break
    }
  }
}
console.log(temp['h1']);

有个简单的思路 得往下完善完善

展开全部 4 讨论