题目:
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
A partially filled sudoku which is valid.
Note: A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
思路:
本题是解数独的入门级别的题目,仅仅是判断是否满足行列以及子方格数字的要求。
编写fill函数,isValid函数。
如果遇到 “.” ,继续;
如果不是先是判断能否满足,再就是更新。
代码:
class Solution { public: int rowValid[9][10]={{0}}; int colValid[9][10]={{0}}; int subValid[9][10]={{0}};//0代表有效 bool isValidSudoku(vector<vector<char>>& board) { for(int i=0;i<=8;i++){ for(int j=0;j<=8;j++){ if(board[i][j]=='.') continue; int index=(int)(board[i][j]-'0'); if( !isValid(i,j,index) ) return false; fill(i,j,index); } } return true; } bool isValid(int row,int col,int val){ if( rowValid[row][val]==0 && colValid[col][val]==0 && subValid[row/3*3+col/3][val]==0 ) return true; return false; } void fill(int row,int col,int val){ rowValid[row][val]=1; colValid[col][val]=1; subValid[row/3*3+col/3][val]=1; } };