leetcode947 移除最多的同行或同列石头

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;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_50070650/article/details/112646681