MostStonesRemovedSameRowColumn

Published at 2023-01-20

class Solution:
    def removeStones(self, stones: List[List[int]]) -> int:
        def dfs(idx, cnts):
            checked[idx] = True
            for i in range(n):
                if checked[i]: continue
                if stones[i][0] == stones[idx][0] or stones[i][1] == stones[idx][1]:
                    cnts = dfs(i, cnts+1)
            return cnts

        cnt = 0
        n = len(stones)
        checked = [False] * n
        for i in range(n):
            if not checked[i]:
                res = dfs(i, 0)
                cnt += res

        return cnt