一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 404|回复: 1
收起左侧

DropBox OA 代码

[复制链接] |试试Instant~ |关注本帖
caoyi 发表于 2016-10-6 15:19:34 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
Grid
照样是老题目,https://www.dropbox.com/sh/jiedm ... IQAXXyfeCeVHfa?dl=0献出解法:. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

public static List<String> solution (int N, List<Cell> lights, List<Cell> queries) {
                List<String> reList = new ArrayList<>();
                Map<Integer, Integer> rows = new HashMap<>();
                Map<Integer, Integer> cols = new HashMap<>();
                Map<Integer, Integer> diags = new HashMap<>();
                Map<Integer, Integer> rDiags = new HashMap<>();
                // step1, fill in array
                for (int i = 0; i < lights.size(); i++) {
                        Cell Cell = lights.get(i);
                        Integer count = rows.get(Cell.x - 1);
                        if (count == null) {
                                count = 1;
                        } else {
                                count++;
                        }
                        rows.put(Cell.x - 1, count);
                        count = cols.get(Cell.y - 1);
                        if (count == null) {
                                count = 1;
                        } else {
                                count++;
                        }
                        cols.put(Cell.y - 1, count);
                        count = diags.get(Cell.x + Cell.y - 2);
                        if (count == null) {
                                count = 1;
                        } else {
                                count++;
                        }
                        diags.put(Cell.x + Cell.y - 2, count);
                        count = rDiags.get(Cell.y - Cell.x + N - 1);
                        if (count == null) {
                                count = 1;
                        } else {
                                count++;
                        }
                        rDiags.put(Cell.y - Cell.x + N - 1, count);
                }
                // step2, turn off lights
                List<Integer> counts = new ArrayList<>();
                for (Cell query : queries) {
                        int sum = 0;
                        //System.out.println(query.x + " " + query.y);
                        sum += rows.get(query.x - 1) == null ? 0 : rows.get(query.x - 1);
                        sum += cols.get(query.y - 1) == null ? 0 : cols.get(query.y - 1);
                        sum += diags.get(query.x + query.y - 2) == null ? 0 : diags.get(query.x + query.y - 2);
                        sum += rDiags.get(query.y - query.x + N - 1) == null ? 0 : rDiags.get(query.y - query.x + N - 1);
                        counts.add(sum);
                }
                // step3,
                for (int index = 0; index < queries.size(); index++) {
                        int x = queries.get(index).x - 1;
                        int y = queries.get(index).y - 1;
                        int sum = counts.get(index);
                        if (lights.contains(queries.get(index))) {
                                sum -= 4;
                        }
                        for (int i = Math.max(0, x - 1); i <= Math.min(x + 1, N - 1); i++) {
                                for (int j = Math.max(0, y - 1); j <= Math.min(y + 1, N - 1); j++) {
                                          Cell lamp = new Cell(i + 1, j + 1);
                                          if (i == x && j == y) continue;
                                          if (lights.contains(lamp)) {
                                                  sum--;
                                          }
                                }
                        }
                       
                        if (sum > 0) {
                                reList.add("LIGHT");
                        } else {
                                reList.add("DARK");
                        }
                }
                return reList;               
        }


.1point3acres缃

评分

1

查看全部评分

麻麻小猪 发表于 2016-10-6 15:20:57 | 显示全部楼层
请问楼主是海投还是内推的呀?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 06:54

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表