成都那家网站建设好,上海民营企业500强,广东省住建厅官方网站,重庆市制作网站公司哪家好这道题是个细节实现题#xff0c;只要把valid sudoku满足的三个条件判断一下即可。 valid sudoku需满足下列三个条件#xff1a; 1#xff09;每一行数字1~9有且只出现一次。2#xff09;每一列数字1~9有且只出现一次。3#xff09;对于每个3*3的sub-box#xff08;用i3、…这道题是个细节实现题只要把valid sudoku满足的三个条件判断一下即可。 valid sudoku需满足下列三个条件 1每一行数字1~9有且只出现一次。2每一列数字1~9有且只出现一次。3对于每个3*3的sub-box用i3、6j3、6两条线划分总共9个sub-box数字1~9有且只出现一次。 基本思路是可以用一个哈希表记录一个数字是否在一行列sub-box中出现过如果出现过则返回false。 1 class Solution {2 public:3 bool isValidSudoku(vectorvectorchar board) {4 //validate rows and columns5 for(int i 0; i 9; i){6 unordered_mapchar,bool row_map;7 unordered_mapchar,bool column_map;8 for(int j 0; j 9; j){9 if(board[i][j] ! .){
10 if(row_map.find(board[i][j]) ! row_map.end()) return false;
11 row_map[board[i][j]] true;
12
13 }
14 if(board[j][i] ! .){
15 if(column_map.find(board[j][i]) ! column_map.end()) return false;
16 column_map[board[j][i]] true;
17 }
18 }
19 }
20 //validate subgrids
21 for(int i 0; i 9; i 3){
22 for(int j 0; j 9; j 3){
23 unordered_mapchar,bool grid_map;
24 for(int row i; row i3; row)
25 for(int col j; col j3; col){
26 if(board[row][col] ! .){
27 if(grid_map.find(board[row][col]) ! grid_map.end()) return false;
28 grid_map[board[row][col]] true;
29 }
30 }
31 }
32 }
33 return true;
34 }
35 }; 还可以用一个数组来代替unordered_map这样可以用更少的空间。转载于:https://www.cnblogs.com/Kai-Xing/p/3903407.html