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使用方法入门
网友评论