1042. Flower Planting With No Adjacent

題意:
本題題意爲:
尋找一個花園的塗色方案,要求
1.花園和花園之間,不能有路徑鏈接的,不能塗成相同顏色的
一共有4中顏色,花園和花園之間,至多有三條路徑java

我菜了 - - ,又沒作出來。。
看答案數組

使用貪心:
idea: 對每個花園依次進行染色時,一定能夠直接染色,由於相臨接的最多最多就是三個,一共4中顏色,因此必定能夠直接染色了ide

具體想法:
每次對節點染色時,新建一個colors數組,colors[j] , 表明節點i旁邊臨接的節點賦值的顏色是否有,若是有,就賦值爲1 而後遍歷,colors,給節點i進行染色idea

代碼以下:code

public int[] gardenNoAdj(int N, int[][] paths) {
        Map<Integer, Set<Integer>> G = new HashMap<>();
        for (int i = 0; i < N; i ++)     G.put(i, new HashSet<>());
        for (int[] p: paths){
            G.get(p[0] - 1).add(p[1] - 1);
            G.get(p[1] - 1).add(p[0] - 1);
        }
        int[] res = new int[N];
        for (int i = 0; i < N ; i++){
            int[] colors = new int[5];
            for (int j : G.get(i))
                colors[res[j]] = 1;
            for (int c = 4; c > 0; --c)
                if (colors[c] == 0)
                    res[i] = c;
        }
        return res;
    }
相關文章
相關標籤/搜索