Graph (easy)

997. Find the Town Judge https://leetcode.com/problems/find-the-town-judge/

public int findJudge(int N, int[][] trust) {
        if(N == 1 && (trust == null || trust.length == 0)) return 1;
        int[] check = new int[N+1];
        for(int[] tru:trust){
            check[tru[1]]++;
            check[tru[0]]--;
        }
        for(int i=0; i <= N; i++) if(check[i] == N-1) return i;
        return -1;
    }

1042. Flower Planting With No Adjacent https://leetcode.com/problems/flower-planting-with-no-adjacent/

public int[] gardenNoAdj(int N, int[][] paths) {
        ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
        for(int i=0;i<N;i++) graph.add(new ArrayList<>());
        for(int[] path:paths){
            int x = path[0]-1, y=path[1]-1;
            graph.get(x).add(y);
            graph.get(y).add(x);
        }
        //try color one by one
        int[] color = new int[N];
        for (int i = 0; i < N; i++) {
            color[i] = getColor(graph, color, i);
        }
        return color;
    }
    private int getColor(ArrayList<ArrayList<Integer>> graph, int[] color, int i) {
        // count which color is used
        boolean[] flower = new boolean[4+1];
        for (int j : graph.get(i)) {
            if (color[j] != -1) {
                flower[color[j]] = true;
            }
        }
        // use a color that has not been used
        for (int x = 1; x <= 4; x++) {
            if (!flower[x]) {
                return x;
            }
        }
        return 0;
    }

 

posted @ 2019-10-28 09:15  weisman  阅读(148)  评论(0编辑  收藏  举报