Friend Circles

标准并查集问题,很久没错了第一次居然没过... 并查集一类的问题真的思路清晰题目明确,做起来很爽啊


class Solution(object):
    def findCircleNum(self, M):
        """
        :type M: List[List[int]]
        :rtype: int
        """
        n = len(M)
        parent = [-1] * n
        result = n
        for i in xrange(n):
            for j in xrange(i + 1, n):
                if M[i][j]:
                    a = self.find(i, parent)
                    b = self.find(j, parent)
                    if a != b:
                        result -= 1
                        parent[a] = b

        return result

    def find(self, node, parent):
        if parent[node] == -1:
            return node
        parent[node] = self.find(parent[node], parent)
        return parent[node]

results matching ""

    No results matching ""