7 ARTS打卡第七周(2019-09-16)

Algorithm

本周算法:36.有效的数独
题解思路:首先这道题目我没有自行解决,第一次遇到中等难度的题目,就被围困半小时告终。于是我查阅了官方题解,它使用了27个HashMap作为存储集合,每行,每列,每个框各有一个HashMap,对于我来说比较有难度的地方为,它使用了一个转换公式将每个框的索引确定,该转换公式为:

 int boxIndex = (i / 3) * 3 + j / 3;

随后开始遍历整个二维char数组,使用Hash表的特性进行判断。

题解代码:

class Solution {
    public boolean isValidSudoku(char[][] board) {
        // init data
        HashMap<Integer, Integer> [] rows = new HashMap[9];
        HashMap<Integer, Integer>[] columns = new HashMap[9];
        HashMap<Integer, Integer> [] boxes = new HashMap[9];
        for (int i = 0; i < 9; i++) {
            rows[i] = new HashMap<Integer, Integer>();
            columns[i] = new HashMap<Integer, Integer>();
            boxes[i] = new HashMap<Integer, Integer>();
        }

        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                int num = (int)board[i][j];
                if (num != '.') {
                    int boxIndex = (i / 3) * 3 + j / 3;
                    rows[i].put(num, rows[i].getOrDefault(num, 0) + 1);
                    columns[j].put(num, columns[j].getOrDefault(num, 0) + 1);
                    boxes[boxIndex].put(num, boxes[boxIndex].getOrDefault(num, 0) + 1);

                    if (rows[i].get(num) > 1 || columns[j].get(num) > 1 || boxes[boxIndex].get(num) > 1) {
                        return false;
                    }
                }
            }
        }

        return true;
    }
}

Review

The Decorator Pattern — A simple guide
这边文章主要是介绍装饰器模式的一些用法

Tip

这是我收集的Linux 命令行的用法
1.find usage
Use find from the command line to locate a specific file by name or extension. The following example searches for .err files in the /home/username/ directory and all sub-directories:
find /home/username/ -name "
.err"

Share

分享一篇我自己编写的
elasticdump使用方法入门

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容