36. Valid Sudoku

Difficulty:
Related Topics:
Similar Questions:

Problem

Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

A partially filled sudoku which is valid.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

Example 1:

Input: [ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [".","9","8",".",".",".",".","6","."], ["8",".",".",".","6",".",".",".","3"], ["4",".",".","8",".","3",".",".","1"], ["7",".",".",".","2",".",".",".","6"], [".","6",".",".",".",".","2","8","."], [".",".",".","4","1","9",".",".","5"], [".",".",".",".","8",".",".","7","9"] ] Output: true 

Example 2:

Input: [   ["8","3",".",".","7",".",".",".","."],   ["6",".",".","1","9","5",".",".","."],   [".","9","8",".",".",".",".","6","."],   ["8",".",".",".","6",".",".",".","3"],   ["4",".",".","8",".","3",".",".","1"],   ["7",".",".",".","2",".",".",".","6"],   [".","6",".",".",".",".","2","8","."],   [".",".",".","4","1","9",".",".","5"],   [".",".",".",".","8",".",".","7","9"] ] Output: false Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid. 

Note:

Solution

/** * @param {character[][]} board * @return {boolean} */ var isValidSudoku = function(board) { var map = {}; var tmp = 0; for (var i = 0; i < 9; i++) { for (var j = 0; j < 9; j++) { tmp = board[i][j]; if (tmp === '.') continue; if (map['i' + i + tmp] || map['j' + j + tmp] || map['b' + Math.floor(i / 3) + Math.floor(j / 3) + tmp]) return false; map['i' + i + tmp] = 1; map['j' + j + tmp] = 1; map['b' + Math.floor(i / 3) + Math.floor(j / 3) + tmp] = 1; } } return true; }; 

Explain:

哈希表:

i、j、b 开头的键分别代表 某行、某列、某块 中,某数字是否已存在

Complexity: