Open github-actions[bot] opened 2 years ago
/*
* @lc app=leetcode id=36 lang=typescript
*
* [36] Valid Sudoku
*/
// @lc code=start
function isValidSudoku(board: string[][]): boolean {
const cols = {};
const rows = {};
const square = {};
for (let r = 0; r < 9; r++) {
for (let c = 0; c < 9; c++) {
const target = board[r][c];
if (target === ".") {
continue;
}
if (
(rows[r] || []).includes(target)
|| (cols[c] || []).includes(target)
// `${~~(r / 3)},${~~(c / 3)}` point to the target 3x3 block
|| (square[`${~~(r / 3)},${~~(c / 3)}`] || []).includes(target)
) {
return false;
}
Array.isArray(rows[r]) ? rows[r].push(target) : (rows[r] = [target]);
Array.isArray(cols[c]) ? cols[c].push(target) : (cols[c] = [target]);
Array.isArray(square[`${~~(r / 3)},${~~(c / 3)}`]) ? square[`${~~(r / 3)},${~~(c / 3)}`].push(target) : (square[`${~~(r / 3)},${~~(c / 3)}`] = [target]);
}
}
return true;
};
// @lc code=end
Nickname: Geeku From vscode-hzfe-algorithms
36 Valid Sudoku