ユニークな9×9の数を決定することは有効です。のみ、次の規則によれば、既に充填された番号が有効であることができるかどうかを確認します。
数字は1-9回だけ各行に現れます。
数字は1-9回のみ各列に表示されます。
図1-9のみ太い実線で区切られた各3x3の子宮内に一度現れます。
図は、部分的に満たされた有効なだけAの数です。
このスペースの数独部分は、数字と、空のセル「」表現に充填されています。
例1:
输入:
[
[ "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"]
]
输出:真
示例2:、 "8" 、 "7"、 "9"」。"、 ""、 "" ] 输出:真示例2:、 "8" 、 "7"、 "9"」。"、 ""、 "" ] 输出:真示例2:
"6"]、 [」。 " "6"、"。 "" "" "" " "2"、 "8"、"。 "]、 ["。 ",." " ""、" 4 "" 1 "" 9 " ""、 ""、" 5 "]、 ["。 " ""、 ""、 ""、" 8 。「」「」「」7「」9「] ] 出力:偽解釈:外部から最初の行58に加えて、最初の数は、実施例1と、この空間に他の図と同じです。 これだけの数が有効ではありませんので、しかし、宮殿の左上隅に、2 3x3の8が存在しています。説明:
唯一の有効な番号(一部が満たされている)は、必ずしも解決可能ではありません。
上記の規則に従ってのみ有効であることができる数値が満たされたかどうかを確認する必要があります。
ユニークなシーケンス備えるの数だけ数字1-9と考えると「」。
数独は常に9x9の形式で与えられます。
class Solution(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
#首先初始化
rows = [{} for i in range(9)]
cols = [{} for i in range(9)]
areas = [{} for i in range(9)]
#遍历
for i in range(9):
for j in range(9):
num = board[i][j]
if(num!='.'):
#赋值
index = (i//3)*3+j//3
rows[i][num] = rows[i].get(num,0)+1
cols[j][num] = cols[j].get(num,0)+1
areas[index][num] = areas[index].get(num,0)+1
#判断是否合规
if rows[i][num]>1 or cols[j][num]>1 or areas[index][num]>1:
return False
return True