首页 > 其他 > 详细

1042. Flower Planting With No Adjacent

时间:2019-05-13 16:18:39      阅读:242      评论:0      收藏:0      [点我收藏+]

题意:
本题题意为:
寻找一个花园的涂色方案,要求
1.花园和花园之间,不能有路径连接的,不能涂成相同颜色的
一共有4中颜色,花园和花园之间,至多有三条路径

我菜了 - - ,又没做出来。。
看答案

使用贪心:
idea: 对每一个花园依次进行染色时,必定可以直接染色,因为相临接的最多最多就是三个,一共4中颜色,所以一定可以直接染色了

具体想法:
每次对节点染色时,新建一个colors数组,colors[j] , 代表节点i旁边临接的节点赋值的颜色是否有,如果有,就赋值为1 然后遍历,colors,给节点i进行染色

代码如下:

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

1042. Flower Planting With No Adjacent

原文:https://www.cnblogs.com/whyaza/p/10857107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!