36. Valid Sudoku 判断部分数独图是否有效

36. Valid Sudoku 判断部分数独图是否有效

特殊的遍历方式,下标作为简单的哈希表 time: O(N²)

bool isValidSudoku(vector<vector<char>>& board) {
    int used1[9][10] = {0};
    int used2[9][10] = {0};
    int used3[9][10] = {0};

    for(int i=0;i<9;++i) {
        for(int j=0;j<9;++j) {
            if (board[i][j]!='.') {
                int num=board[i][j]-'0';
                int k=(i/3)*3+j/3;
                if (used1[i][num]||used2[j][num]||used3[k][num])
                    return false;
                used1[i][num]=used2[j][num]=used3[k][num]=1;
            }
        }
    }
    return true;
}

#array