-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path36_valid_sudoku.js
62 lines (43 loc) · 1.33 KB
/
36_valid_sudoku.js
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
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function(board) {
let hashMap = {};
let threeMap = {};
let threeRowCounter = 1;
for (let row = 0; row < board.length; row++) {
let threeColumnCounter = 1;
for (let column = 0; column < board[row].length; column++) {
if (board[row][column] !== ".") {
let tempVal = hashMap[board[row][column]];
if (!Array.isArray(tempVal)) {
hashMap[board[row][column]] = [[row,column]];
} else {
for(let i = 0; i < tempVal.length; i++) {
let [tRow, tColumn] = tempVal[i];
if (tRow == row || tColumn == column) {
return false;
}
}
hashMap[board[row][column]].push([row,column]);
}
if (threeMap[`${threeRowCounter}${threeColumnCounter}`]) {
if (threeMap[`${threeRowCounter}${threeColumnCounter}`].has(board[row][column])) {
return false;
}
} else {
threeMap[`${threeRowCounter}${threeColumnCounter}`] = new Set();
}
threeMap[`${threeRowCounter}${threeColumnCounter}`].add(board[row][column]);
}
if ((column + 1) % 3 === 0) {
threeColumnCounter++;
}
}
if ((row + 1) % 3 === 0) {
threeRowCounter++;
}
}
return true;
};