zoukankan      html  css  js  c++  java
  • 1042. Flower Planting With No Adjacent

    题意:
    本题题意为:
    寻找一个花园的涂色方案,要求
    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;
        }
    
  • 相关阅读:
    oracle lpad函数和rpad函数
    OREACLE SUBSTR()函数应用-截取字符函数
    oracle常用数值函数
    Oracle 分析函数row_number() over (partition by order by )
    oracle中decode函数用法
    oracle数据字典信息整理
    python学习遇到的英文词汇
    读书随想
    常用css列表
    爬虫趣事
  • 原文地址:https://www.cnblogs.com/whyaza/p/10857107.html
Copyright © 2011-2022 走看看