class Solution(object):
def solveSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
#https://leetcode.com/discuss/84831/java-backtracking-stack-20ms
empty = []
for i in range(9):
for j in range(9):
if board[i][j] == '.':
empty.append(9 * i + j)
self.solve(board, empty)
def solve(self, board, empty):
if len(empty) == 0:
return True
first_value = empty[-1]
row, col = first_value / 9, first_value % 9
for k in range(1, 10):
if self.is_safe(board, row, col, str(k)):
board[row][col] = str(k)
empty.pop()
if self.solve(board, empty):
return True
board[row][col] = '.'
empty.append(first_value)
return False
def is_safe(self, board, row, col, ch):
for k in range(9):
if board[k][col] == ch:
return False
if board[row][k] == ch:
return False
start_row, start_col = 3 * (row / 3), 3 * (col / 3)
for i in range(start_row, start_row + 3):
for j in range(start_col, start_col + 3):
if board[i][j] == ch:
return False
return True
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
python_leetcode面试题解之第37题解数独_python题解.zip (1个子文件)
python_leetcode面试题解之第37题解数独_python题解
037_Sudoku_Solver.py 1KB
共 1 条
- 1
资源评论
Ddddddd_158
- 粉丝: 805
- 资源: 217
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功