code
对y坐标做一下处理,防止与x轴冲突。
class Solution {
int[] par = new int[20001];
public int removeStones(int[][] stones) {
Arrays.fill(par, -1);
for (int i = 0; i < stones.length; i++) {
union(stones[i][0], stones[i][1] + 10000);
}
int res = 0;
for (int i = 0; i <= 20000; i++) {
if (par[i] == i){
++res;
}
}
return stones.length - res;
}
private int find(int x){
if (par[x] < 0){
par[x] = x;
}
return x == par[x] ? x: (par[x] = find(par[x]));
}
private void union(int i, int j){
int x = find(i), y = find(j);
par[x] = y;
}
}