前言
最近太懒了,先把LeetCode的题更新上面吧。
问题描述
解决方案
我的解决方案非常简单,就是递归遍历各个方格,填入1-9,然后判断是否合法,如果合法则判断下一个,直到判断到最高一个方格仍然合法,则当前结果就是一个合法的结果,返回该结果即可。用python写的,感觉写的很费事,将就着看吧,而且这样写的效率也不是很高,以后有时间再提升一下吧(估计以后没有心情改了。。。。)
class Solution:
def Isvalid(self,board,row,col,k):
for i in range(9):
row1 = (int(row/3))*3 + int(i/3)
col1 = (int(col/3))*3 + i%3
if k == board[row][i] or k == board[i][col] or k == board[row1][col1]:
return False
return True
def recursion(self,board,i):
for j in range(i,81,1):
row = (int)(j/9)
col = j%9
if board[row][col] != '.':
continue
else:
for k in range(1,10,1):
if self.Isvalid(board,row,col,str(k)):
board[row][col] = str(k)
if self.recursion(board,j+1) :
return True
else:
board[row][col] = '.'
return False
return True
def solveSudoku(self, board: List[List[str]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
self.recursion(board,0)
总结
现在目标一天一道题都很难实现了,还是要坚持呀,希望写博客能让我保持动力!