LeetCode 36 Valid Sudoku

Problem:

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.

Summary:

判断当前给出的数独是否满足条件。

Solution:

横向,纵向,每个3*3小方格分别判断。

 1 class Solution {
 2 public:
 3     bool isValidSudoku(vector<vector<char>> board) {
 4         int validRow[9] = { 0 }, validCol[9] = { 0 };
 5         int validSqr[9] = { 0 };
 6     
 7         for (int i = 0; i < 9; i++) {
 8             memset(validRow, 0, sizeof(validRow));
 9             memset(validCol, 0, sizeof(validCol));
10     
11             for (int j = 0; j < 9; j++) {
12                 if (board[i][j] != '.') {
13                     char tmp = board[i][j];
14                     if (!validRow[tmp - '0' - 1]) {
15                         validRow[tmp - '0' - 1]++;
16                     }
17                     else {
18                         return false;
19                     }
20                 }
21     
22                 if (board[j][i] != '.') {
23                     char tmp = board[j][i];
24                     if (!validCol[tmp - '0' - 1]) {
25                         validCol[tmp - '0' - 1]++;
26                     }
27                     else {
28                         return false;
29                     }
30                 }
31             }
32         }
33     
34         for (int m = 0; m < 3; m++) {
35             for (int n = 0; n < 3; n++) {
36                 memset(validSqr, 0, sizeof(validSqr));
37     
38                 for (int i = m * 3; i < m * 3 + 3; i++) {
39                     for (int j = n * 3; j < n * 3 + 3; j++) {
40                         if (board[i][j] != '.') {
41                             char tmp = board[i][j];
42                             if (!validSqr[tmp - '0' - 1]) {
43                                 validSqr[tmp - '0' - 1]++;
44                             }
45                             else {
46                                 return false;
47                             }
48                         }
49     
50                     }
51                 }
52             }
53         }
54     
55         return true;
56     }
57 
58 };
原文地址:https://www.cnblogs.com/VickyWang/p/6243675.html