947. Most Stones Removed with Same Row or Column
- Most Stones Removed with Same Row or Column python solution
题目描述
On a 2D plane, we place stones at some integer coordinate points. Each coordinate point may have at most one stone.
Now, a move consists of removing a stone that shares a column or row with another stone on the grid.
What is the largest possible number of moves we can make?

解析
本题想要我们移动尽可能多的石子
横或者纵坐标相等的石子会互相链接构成一个区域。
可移动石子最多数目就是,石子的总数减去独立区域的个数
class Solution:
def removeStones(self, stones: List[List[int]]) -> int:
UF = {}
def find(x):
if x != UF[x]:
UF[x] = find(UF[x])
return UF[x]
def union(x, y):
UF.setdefault(x, x)
UF.setdefault(y, y)
UF[find(x)] = find(y)
for i, j in stones:
union(i, ~j)
return len(stones) - len({find(x) for x in UF})
Reference
https://leetcode.com/problems/most-stones-removed-with-same-row-or-column/discuss/197668/Count-the-Number-of-Islands-O(N)
本文介绍了一个关于在二维平面上移动石子的游戏策略问题。目标是在满足一定条件下,尽可能多地移除石子。文章详细解析了如何通过链接石子构成区域,并利用并查集算法找出独立区域,从而计算出可移动石子的最大数目。
231

被折叠的 条评论
为什么被折叠?



