36. Valid Sudoku(js)

36. Valid Sudoku

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

  1. Each row must contain the digits 1-9 without repetition.
  2. Each column must contain the digits 1-9 without repetition.
  3. Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.


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.
题意:每一行排列数字1-9且不能重复,每一列排列1-9且不能重复,每个3X3小方形排列1-9且不重复,验证是否数独
代码如下:
/**
 * @param {character[][]} board
 * @return {boolean}
 */
var isValidSudoku = function(board) {
  var len=board.length;
    if(len===0) return true;
    
    for(var i=0;i<len;i++){
        var row=[];
        var col=[];
        for(var k=0;k<10;k++){
            row[k]=false;
            col[k]=false;
        }
        for(var j=0;j<len;j++){
// row
            if(board[i][j]!=='.'){
                if(row[parseInt(board[i][j])-0]){
                    return false;
                }
                row[parseInt(board[i][j])-0]=true;
            }
// col
            if(board[j][i]!=='.'){
                if(col[parseInt(board[j][i])-0]){
                    return false;
                }
                col[parseInt(board[j][i])-0]=true;
            }
        }
    }
//     cell
    for(var i=0;i<3;i++){
        for(var j=0;j<3;j++){
            var cell=[];
            for(var k=0;k<10;k++){
                cell[k]=false;
            }
            for(var r=3*i;r<3*i+3;r++){
                for(var c=3*j;c<3*j+3;c++){
                    if(board[r][c]!=='.'){
                        if(cell[parseInt(board[r][c])-0]){
                            return false;
                        }
                        cell[parseInt(board[r][c])-0]=true;
                    }
                }
            }
        }
    }
    return true;
};
原文地址:https://www.cnblogs.com/xingguozhiming/p/10415201.html