-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy path36. Valid Sudoku.js
More file actions
80 lines (66 loc) · 2.3 KB
/
36. Valid Sudoku.js
File metadata and controls
80 lines (66 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function(board) {
var rowLen = board.length;
var colLen = board[0].length;
var hashRow = {}, hashCol = {}, hashBlock = {};
for (var i=0; i<rowLen; i++) {
for (var j=0; j<colLen; j++) {
if (board[i][j] !== "." && hashRow[board[i][j]] !== undefined) return false;
else hashRow[board[i][j]] = true;
if (board[j][i] !== "." && hashCol[board[j][i]] !== undefined) return false;
else hashCol[board[j][i]] = true;
var rowIndex = 3 * parseInt(i/3), colIndex = 3 * parseInt(i%3);
var row = parseInt(rowIndex + j/3);
var col = parseInt(colIndex + j%3);
if (board[row][col] !== "." && hashBlock[board[row][col]] !== undefined) return false;
else hashBlock[board[row][col]] = true;
}
hashRow = {};
hashCol = {};
hashBlock = {};
}
return true;
};
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function(board) {
var hashRow = {};
var hashCol = {};
var hashBlock = {};
var rowLen = board.length;
var colLen = board[0].length;
// check row
// check col
// check block
for (var i=0; i<rowLen; i++) {
for (var j=0; j<colLen; j++) {
if (board[i][j] !== "." && hashRow[parseInt(board[i][j])] !== undefined) return false;
else hashRow[parseInt(board[i][j])] = true;
}
hashRow = {};
}
for (var i=0; i<rowLen; i++) {
for (var j=0; j<colLen; j++) {
if (board[j][i] !== "." && hashCol[parseInt(board[j][i])] !== undefined) return false;
else hashCol[parseInt(board[j][i])] = true;
}
hashCol = {};
}
for (var i=0; i<rowLen; i++) {
for (var j=0; j<colLen; j++) {
var rowIndex = 3*parseInt(i/3); // 0,0,0,3...,6..
var colIndex = 3*(i%3); // 0,1,2,0,1,2
rowIndex = rowIndex + parseInt(j/3);
colIndex = colIndex + j%3;
if (board[rowIndex][colIndex] !== "." && hashBlock[parseInt(board[rowIndex][colIndex])] !== undefined) return false;
else hashBlock[parseInt(board[rowIndex][colIndex])] = true;
}
hashBlock = {};
}
return true;
};