判断一个9x9的数独是否有效算法详解
时间: 2023-12-17 20:05:15 浏览: 198
9x9数独算法
判断一个9x9的数独是否有效,需要满足以下三个条件:
1. 每一行只能包含数字1-9,不能有重复的数字;
2. 每一列只能包含数字1-9,不能有重复的数字;
3. 每一个3x3的小格子内只能包含数字1-9,不能有重复的数字。
可以采用遍历每一个格子,依次检查每一行、每一列、每一个3x3的小格子内是否有重复的数字。具体的算法如下:
1. 遍历数独中的每一个格子,检查每一行是否有重复的数字。
2. 遍历数独中的每一个格子,检查每一列是否有重复的数字。
3. 遍历数独中的每一个3x3的小格子,检查是否有重复的数字。
4. 如果以上三个条件都满足,则数独有效。
下面是Python实现代码:
```python
def isValidSudoku(board):
"""
:type board: List[List[str]]
:rtype: bool
"""
# Check each row
for i in range(9):
row = []
for j in range(9):
if board[i][j] != '.':
if board[i][j] in row:
return False
else:
row.append(board[i][j])
# Check each column
for i in range(9):
col = []
for j in range(9):
if board[j][i] != '.':
if board[j][i] in col:
return False
else:
col.append(board[j][i])
# Check each 3x3 sub-box
for i in range(0, 9, 3):
for j in range(0, 9, 3):
box = []
for k in range(3):
for l in range(3):
if board[i+k][j+l] != '.':
if board[i+k][j+l] in box:
return False
else:
box.append(board[i+k][j+l])
return True
```
以上算法的时间复杂度为 O(n^2),其中 n = 9。
阅读全文