389.判断数独是否合法

描述

请判定一个数独是否有效。

该数独可能只填充了部分数字,其中缺少的数字用 . 表示。

一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。

您在真实的面试中是否遇到过这个题?  

说明

什么是 数独

  • http://sudoku.com.au/TheRules.aspx
  • http://baike.baidu.com/subview/961/10842669.htm

样例

The following partially filed sudoku is valid.

389.判断数独是否合法_第1张图片

行、列、每个小九宫格内不能有重复的数字,采用哈希表最简单。

class Solution {
public:
    /**
     * @param board: the board
     * @return: whether the Sudoku is valid
     */
    bool isValidSudoku(vector> &board) {
        // write your code here
        int row[9][9]={0},column[9][9]={0},square[9][9]={0};
        for(int i=0;i<9;i++){
            for(int j=0;j<9;j++){
                if(board[i][j]!='.'){
                    int k = i/3*3+j/3;
                    int number = board[i][j]-'1';
                    if(row[i][number]||column[j][number]||square[k][number] return false;
                    row[i][number]=column[j][number]=square[k][number]=1;
                }
            }
        }
        return true;
    }
};

你可能感兴趣的:(刷题)