题目:
https://leetcode-cn.com/problems/valid-sudoku/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class _36_IsValidSudoku {
public boolean isValidSudoku(char[][] board) {
Map<Integer, List<List<Integer>>> map = new HashMap<>();
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (board[i][j] == '.') {
continue;
}
int num = board[i][j] - '0';
List<List<Integer>> list = map.getOrDefault(num, new ArrayList<>());
int b = getNumber(i) * 10 + getNumber(j);
List<Integer> row;
List<Integer> col;
List<Integer> block;
if (list.size() == 0) {
row = new ArrayList<>();
col = new ArrayList<>();
block = new ArrayList<>();
list.add(row);
list.add(col);
list.add(block);
} else {
row = list.get(0);
col = list.get(1);
block = list.get(2);
}
if(row.contains(i) || col.contains(j) || block.contains(b)) {
return false;
}
else {
row.add(i);
col.add(j);
block.add(b);
}
map.put(num, list);
}
}
return true;
}
public int getNumber(int i) {
int num = 0;
switch (i) {
case 0:
case 1:
case 2:
num = 0;
break;
case 3:
case 4:
case 5:
num = 1;
break;
case 6:
case 7:
case 8:
num = 2;
break;
}
return num;
}
}