LeetCode 36. Valid Sudoku

来源:互联网 发布:linux echo 脚本 编辑:程序博客网 时间:2024/05/19 04:54

题意

判断一个99的数独矩阵是否合法

思路

暴力扫描,先判断行和列,最后判断每一个小方块,中间使用hash来记录数字是否出现

代码

class Solution {public:    bool isValidSudoku(vector<vector<char>>& board) {        for(int i = 0; i < 9; i++){            map<char, int>mp;            for(int j = 0; j < 9; j++){                if(board[i][j] == '.') continue;                if(mp[board[i][j]] > 0){                    return false;                }                mp[board[i][j]]++;            }            mp.clear();            for(int j = 0; j < 9; j++){                if(board[j][i] == '.') continue;                if(mp[board[j][i]] > 0){                    return false;                }                mp[board[j][i]]++;            }        }        for(int i = 0; i < 3; i++){            for(int j = 0; j < 3; j++){                map<char, int>mp;                for(int k = i * 3; k < i * 3 + 3; k++){                    for(int q = j * 3; q < j * 3 + 3; q++){                        if(board[k][q] == '.') continue;                        if(mp[board[k][q]] > 0){                            return false;                        }                        mp[board[k][q]]++;                    }                }                mp.clear();            }        }        return true;    }};