剑指 Offer II 116. 省份数量

215 阅读1分钟

剑指 Offer II 116. 省份数量

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。

var findCircleNum = function (arr) {
    var len = arr.length;
    var parent = new Array(len).fill().map((v, i) => i)
    for (var i = 0; i < len; i++) {
        for (var j = i + 1; j < len; j++) {
            var pi = find(i)
            var pj = find(j)
            if (arr[i][j] === 1) {
                parent[pi] = pj
            }
        }
    }
    function find(i) {
        var value = parent[i]
        if (value !== i) {
            parent[i] = find(value)
        }
        return parent[i]
    }
    var res = 0;
    parent.forEach((item, idx) => {
        if (idx === item) {
            res++
        }
    })
    return res
};