Skip to content

Commit a71902e

Browse files
authored
Create Most Stones Removed with Same Row or Column.java
1 parent 1e0d31b commit a71902e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//947. Most Stones Removed with Same Row or Column
2+
class Solution {
3+
public int removeStones(int[][] stones) {
4+
int numOfIslands = 0;
5+
List<Integer>[] graph = new List[stones.length];
6+
Set<Integer> seen = new HashSet<>();
7+
8+
for (int i = 0; i < graph.length; ++i)
9+
graph[i] = new ArrayList<>();
10+
11+
for (int i = 0; i < stones.length; ++i)
12+
for (int j = i + 1; j < stones.length; ++j)
13+
if (stones[i][0] == stones[j][0] || stones[i][1] == stones[j][1]) {
14+
graph[i].add(j);
15+
graph[j].add(i);
16+
}
17+
18+
for (int i = 0; i < stones.length; ++i)
19+
if (seen.add(i)) {
20+
dfs(graph, i, seen);
21+
++numOfIslands;
22+
}
23+
24+
return stones.length - numOfIslands;
25+
}
26+
27+
private void dfs(List<Integer>[] graph, int u, Set<Integer> seen) {
28+
for (final int v : graph[u])
29+
if (seen.add(v))
30+
dfs(graph, v, seen);
31+
}
32+
}

0 commit comments

Comments
 (0)