Skip to main content

947. Most Stones Removed with Same Row or Column

#.    . .
#. . .
#. . .
class Solution:
def removeStones(self, stones: List[List[int]]) -> int:

n = len(stones)

if n == 1:
return 0

parents = {}

def find(x):
if x not in parents:
parents[x] = x
if x != parents[x]:
parents[x] = find(parents[x])
return parents[x]

def union(x, y):
x = find(x)
y = find(y)
if x < y:
parents[y] = x
else:
parents[x] = y

for i in range(n):
find(i)

for i in range(n):
for j in range(i):
if stones[i][0] == stones[j][0]:
union(i, j)
if stones[i][1] == stones[j][1]:
union(i, j)

for i in range(n):
find(i)


return len(parents) - len(set(parents.values()))