# [leetcode]Valid Sudoku

class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
int row,col,block;
char ch;
vector<int> flags(9,0);

//rows
for(row=0;row<9;row++){
flags.assign(9,0);
for(col=0;col<9;col++){
ch=board[row][col];
if(ch!='.'){
if(flags[ch-'1']>0){
return false;
}else{
flags[ch-'1']++;
}
}
}
}
//cols
for(col=0;col<9;col++){
flags.assign(9,0);
for(row=0;row<9;row++){
ch=board[row][col];
if(ch!='.'){
if(flags[ch-'1']>0){
return false;
}else{
flags[ch-'1']++;
}
}
}
}
//blocks
for(block=0;block<9;block++){
int srow=(block/3)*3;
int scol=(block%3)*3;
flags.assign(9,0);
for(row=srow;row<srow+3;row++){
for(col=scol;col<scol+3;col++){
ch=board[row][col];
if(ch!='.'){
if(flags[ch-'1']>0){
return false;
}else{
flags[ch-'1']++;
}
}
}
}
}
return true;
}
};
class Solution {
public:
bool checkValid(int vec[],int val){
if(vec[val]==1){
return false;
}
vec[val]=1;
return true;
}

bool isValidSudoku(vector<vector<char>>& board) {
int rowValid[10]={0};
int colValid[9][10]={0};
int subBoardValid[9][10]={0};

for(int i=0;i<9;++i){
memset(rowValid,0,sizeof(rowValid));
for(int j=0;j<9;++j){
if(board[i][j]!='.'){
if(!checkValid(rowValid,board[i][j]-'0')||!checkValid(colValid[j],board[i][j]-'0')||!checkValid(subBoardValid[i/3*3+j/3],board[i][j]-'0')){
return false;
}
}
}
}
return true;
}
};

class Solution {
public:
bool checkValid(int vec[],int val){
if(val<0){//字符'.'
return true;
}
if(vec[val]==1){
}
vec[val]=1;
return true;
}

bool isValidSudoku(vector<vector<char>>& board) {
int rowValid[10]={0};
int colValid[10]={0};
int subBoardValid[10]={0};
for(int i=0;i<9;++i){
memset(rowValid,0,sizeof(rowValid));
memset(colValid,0,sizeof(colValid));
memset(subBoardValid,0,sizeof(subBoardValid));
for(int j=0;j<9;++j){
//if(board[i][j]!='.'){
if(!checkValid(rowValid,board[i][j]-'0')||!checkValid(colValid,board[j][i]-'0')||!checkValid(subBoardValid,board[3*(i/3)+j/3][3*(i%3)+j%3]-'0')){
return false;
}
//}
}
}
return true;
}
};
• 本文已收录于以下专栏：

## LeetCode 36 Valid Sudoku (C,C++,Java,Python)

Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa...
• runningtortoises
• 2015年05月18日 22:56
• 2974

## Valid Sudoku -- LeetCode

• linhuanmars
• 2014年03月10日 03:52
• 13182

## LeetCode-36. Valid Sudoku (JAVA)（有效数独）

LeetCode-36. Valid Sudoku (JAVA)（有效数独）
• mine_song
• 2017年04月17日 09:25
• 447

## Valid Sudoku Leetcode Python

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...
• hyperbolechi
• 2015年01月17日 05:21
• 1066

## LeetCode（36）Valid Sudoku

• fly_yr
• 2015年08月25日 20:40
• 2246

## Leetcode_36_Valid Sudoku

• pistolove
• 2015年01月08日 19:15
• 1440

## LeetCode 36 Valid Sudoku（有效数独）

• NoMasp
• 2015年11月30日 20:58
• 3391

## [LeetCode]36.Valid Sudoku

【题目】 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board c...
• SunnyYoona
• 2014年01月20日 13:42
• 1491

## LeetCode 36. Valid Sudoku（数独游戏）

• jmspan
• 2016年05月20日 10:38
• 364

## 36. Valid Sudoku [easy] (Python)

• coder_orz
• 2016年06月06日 16:35
• 1425

举报原因： 您举报文章：[leetcode]Valid Sudoku 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)