947. Most Stones Removed with Same Row or Column
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?
Example 1:
Input:
stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]
Output: 5Example 2:
Input:
stones = [[0,0],[0,2],[1,1],[2,0],[2,2]]
Output: 3Example 3:
Input:
stones = [[0,0]]
Output: 0Note:
1 <= stones.length <= 10000 <= stones[i][j] < 10000
Thoughts:
Union Find: Similar to number of islands, where a "connected" graph is a island. Unify the row and col index (Original Post)
Optimization: Path Compression, Union by rank (see 305. Number of Islands II)
DFS: number of islands -> island: collection of points connected by row or column (Original Post)
Code: T: O(n) -> O(1)
Code: T:O(n) -> O(1): Path Compression + Union by rank
Code: DFS: discard points for the same island
Last updated
Was this helpful?