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 [] rows = new HashMap[9];
        HashMap[] columns = new HashMap[9];
        HashMap [] boxes = new HashMap[9];
        for (int i = 0; i < 9; i++) {
            rows[i] = new HashMap();
            columns[i] = new HashMap();
            boxes[i] = new HashMap();
        }

        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使用方法入门

你可能感兴趣的:(7 ARTS打卡第七周(2019-09-16))