题解-简单递归做法 | #小米Git#

小米Git

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

class Solution {
public:
    int Git(vector<string>& matrix, int versionA, int versionB) {
        // write code here
        dfs(matrix, 0, versionA, versionB);
        return found;
    }
    int found = -1;
    int dfs(vector<string>& matrix, int node, int nodeA, int nodeB){
        if(found != -1) return 0;
        if(matrix[node][node] == -1) return 0; // visit
        int res = 0;
        if(node == nodeA) res |= 1;
        if(node == nodeB) res |= 2;
        matrix[node][node] = -1;
        for(int i = 0; i < matrix[node].size(); i++){
            if(matrix[node][i] == '1') res |= dfs(matrix, i, nodeA, nodeB);
        }
        if(found != -1){
            return res;
        }else{
            if(res == 3) found = node;
            return res;
        }
    }
};

经典最近公共祖先问题的

时间复杂度:O(n^2),n为点的数量

空间复杂度:O(n)最大递归深度,n为点的数量

全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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