**source:**https://leetcode.com/problems/valid-sudoku/**C/C++**

**Solution to LeetCode**problem

**36**.

**Valid Sudoku**.

## Problem

Determine if a `9 x 9`

Sudoku board is valid. Only the filled cells need to be validated **according to the following rules**:

Each row must contain the digits `1-9`

without repetition.

Each column must contain the digits `1-9`

without repetition.

Each of the nine `3 x 3`

sub-boxes of the grid must contain the digits `1-9`

without repetition.

**Note:**

- A Sudoku board (partially filled) could be valid but is not necessarily solvable.
- Only the filled cells need to be validated according to the mentioned rules.

## Examples

**Example 1:**

Input:board = [[“5”,”3”,”.”,”.”,”7”,”.”,”.”,”.”,”.”]

,[“6”,”.”,”.”,”1”,”9”,”5”,”.”,”.”,”.”]

,[”.”,”9”,”8”,”.”,”.”,”.”,”.”,”6”,”.”]

,[“8”,”.”,”.”,”.”,”6”,”.”,”.”,”.”,”3”]

,[“4”,”.”,”.”,”8”,”.”,”3”,”.”,”.”,”1”]

,[“7”,”.”,”.”,”.”,”2”,”.”,”.”,”.”,”6”]

,[”.”,”6”,”.”,”.”,”.”,”.”,”2”,”8”,”.”]

,[”.”,”.”,”.”,”4”,”1”,”9”,”.”,”.”,”5”]

,[”.”,”.”,”.”,”.”,”8”,”.”,”.”,”7”,”9”]]

Output:true

**Example 2:**

Input:board = [[“8”,”3”,”.”,”.”,”7”,”.”,”.”,”.”,”.”]

,[“6”,”.”,”.”,”1”,”9”,”5”,”.”,”.”,”.”]

,[”.”,”9”,”8”,”.”,”.”,”.”,”.”,”6”,”.”]

,[“8”,”.”,”.”,”.”,”6”,”.”,”.”,”.”,”3”]

,[“4”,”.”,”.”,”8”,”.”,”3”,”.”,”.”,”1”]

,[“7”,”.”,”.”,”.”,”2”,”.”,”.”,”.”,”6”]

,[”.”,”6”,”.”,”.”,”.”,”.”,”2”,”8”,”.”]

,[”.”,”.”,”.”,”4”,”1”,”9”,”.”,”.”,”5”]

,[”.”,”.”,”.”,”.”,”8”,”.”,”.”,”7”,”9”]]

Output:false

Explanation:Same as Example 1, except with the5in the top left corner being modified to8. Since there are two 8’s in the top left 3x3 sub-box, it is invalid.

## Constraints

`board.length == 9`

`board[i].length == 9`

`board[i][j]`

is a digit`1-9`

or`'.'`

.

## Solution

- For every “cell” with a number, we explore the whole row and column to see if the number is located in any other place. If so, return
`false`

. - For every “cell” with a number, we explore the the
`3x3`

neighbourhood to which the number belongs.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for (int row=0; row<9; row++) {
for (int col=0; col<9; col++) {
if (board[row][col] == '.')
continue;
for (int i=0; i<9; i++) {
if (i != row && board[i][col] == board[row][col])
return false;
if (i != col && board[row][i] == board[row][col])
return false;
}
for (int y=0; y<3; y++) {
for (int x=0; x<3; x++) {
if ((3*(col/3)+x)==col && (3*(row/3)+y)==row)
continue;
if (board[3*(row/3)+y][3*(col/3)+x] == board[row][col])
return false;
}
}
}
}
return true;
}
};