leetcode-36-valid sudoku

来源:互联网 发布:手机怎么切换软件 编辑:程序博客网 时间:2024/06/05 08:11

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.

题意:判断一个9*9二维数组是否有效数独。每行每列每个小格都要满足1-9。

class Solution {public:    bool isValidSudoku(vector<vector<char> > &board) {          // Note: The Solution object is instantiated only once.          int row[9],col[9];          for(int i = 0; i < 9; i++)          {              memset(row,0,sizeof(int)*9);              memset(col,0,sizeof(int)*9);              for(int j = 0; j < 9; j++)              {                  if(board[i][j] != '.')                  {                      if(row[board[i][j]-'1'] > 0)return false;                      else row[board[i][j]-'1']++;                  }                  if(board[j][i] != '.')                  {                      if(col[board[j][i]-'1'] > 0)return false;                      else col[board[j][i]-'1']++;                  }              }          }          for(int i = 0; i < 9; i+=3)              for(int j = 0; j < 9; j+=3)              {                  memset(row,0,sizeof(int)*9);                  for(int a = 0; a < 3; a++)                      for(int b= 0; b < 3; b++)                          if(board[i+a][j+b] != '.')                          {                              if(row[board[i+a][j+b]-'1']>0)return false;                              else row[board[i+a][j+b]-'1']++;                          }              }          return true;      }  };

if(row[board[i][j]-‘1’] > 0)return false; 这句要注意。row索引用字符直接 -‘1’。

0 0
原创粉丝点击