题解 | #小米Git#

小米Git

https://www.nowcoder.com/practice/4fcd94851d9142458329fd1d3e5802a8

function Git( matrix ,  versionA ,  versionB ) {
    const n = matrix.length
//     将string转换为数组更改数组。。。。
    for(let i = 0; i < n; i++) {
        matrix[i] = matrix[i].split('').map(Number)
    }
//     father数组记录当前节点的父元素
    const father = new Array(n).fill(0)
//     level数组记录当前节点的层级,0为0层
    const level = new Array(n).fill(0)

    const q = new Array()
//     BFS遍历每个元素
    q.push(0)
    while (q.length > 0) {
        // 遍历行数
        let index = q.shift()
        for (let i = 1; i < n; i++) {
            if (matrix[index][i] === 1) {
                father[i] = index
                matrix[i][index] = 0
                level[i] = level[index] + 1
                q.push(i)
            }
        }
    }

    while (level[versionA] > level[versionB]) {
        versionA = father[versionA]
    }
    while (level[versionA] < level[versionB]) {
        versionB = father[versionB]
    }
//     如果两个节点位于同一侧
    if (versionA === versionB)
        return versionA
//     如果两个节点位于不同侧
    while (father[versionA] !== father[versionB]) {
        versionA = father[versionA]
        versionB = father[versionB]
    }
    return father[versionA]
}
module.exports = {
    Git : Git
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 16:46
今天本来好好的,结果带教老师当着众人的面,直接大声叫我的名字,我过去还没站稳,劈头盖脸就是一句:“你这搞的什么玩意啊!没带脑子上班吗”那语气、那眼神,仿佛我做了什么十恶不赦的大事。我到底干啥了?不过是一些小疏漏,谁刚开始实习不会犯错啊?可她倒好,不仅不耐心指导,还这样贬低我。我满心的热情和期待,瞬间被浇了个透心凉🥶我也是爹妈疼爱的宝贝,来实习是为了学习、成长,不是来被人随意羞辱的!真心希望遇到的带教老师能多些耐心和善意,毕竟谁都有从零开始的时候,这样的“教育”方式,真的只会让人越来越没自信
longerluck...:前几年实习(初创公司),我们老板每月不固定会举行会议,叫我们几个实习生谈一下生活看到或听到的一些事情,并给出看法,当时我就正常讲了下我所见到的,没有个人看法,老板直接当着众人的面骂了我,那时候我真是感觉尴尬的要死(毕竟还有其他正式员工在)后面没待多久我就提出离职(因为当时我还负责一个项目),我leader叫我不要走,说给我涨工资,我反正觉得这种公司我是待不下去了,官味太重了,最后我还是跑路
实习吐槽大会
点赞 评论 收藏
分享
07-07 17:06
已编辑
深圳技术大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务