Algorithm
本周算法:36.有效的數(shù)獨
題解思路:首先這道題目我沒有自行解決己儒,第一次遇到中等難度的題目记焊,就被圍困半小時告終芳杏。于是我查閱了官方題解豫领,它使用了27個HashMap作為存儲集合抡柿,每行,每列等恐,每個框各有一個HashMap洲劣,對于我來說比較有難度的地方為,它使用了一個轉(zhuǎn)換公式將每個框的索引確定课蔬,該轉(zhuǎn)換公式為:
int boxIndex = (i / 3) * 3 + j / 3;
隨后開始遍歷整個二維char數(shù)組囱稽,使用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使用方法入門