1
# Runtime: 104 ms (Top 89.12%) | Memory: 14 MB (Top 35.48%)
2
class Solution:
3
def isValidSudoku(self, board: List[List[str]]) -> bool:
4

5
hrow = {}
6
hcol = {}
7
hbox = defaultdict(list)
8

9
# CHECK FOR DUPLICATES ROWWISE
10
for i in range(9):
11
for j in range(9):
12

13
# JUST THAT THE DUPLICATE SHOULDNT BE ","
14
if board[i][j] != ".":
15

16
if board[i][j] not in hrow:
17
hrow[board[i][j]] = 1
18

19
else:
20
return False
21

22
# CLEAR HASHMAP FOR THIS ROW
23
hrow.clear()
24
print("TRUE1")
25
# CHECK FOR DUPLICATES COLUMNWISE
26

27
for i in range(9):
28
for j in range(9):
29

30
# JUST THAT THE DUPLICATE SHOULDNT BE ","
31
if board[j][i] != ".":
32

33
if board[j][i] not in hcol:
34
hcol[board[j][i]] = 1
35

36
else:
37
return False
38

39
# CLEAR HASHMAP FOR THIS COL
40

41
hcol.clear()
42

43
print("TRUE2")
44

45
# CHECK DUPLICATE IN BOX, THIS IS WHERE KEY DESIGN SKILLS COME INTO PLAY, FOR SUDOKU YOU COMBINE ROW INDICES AND COL INDICES
46

47
for i in range(9):
48
for j in range(9):
49

50
i_3 = i // 3
51
j_3 = j // 3
52

53
# print(hbox)
54
if board[i][j] != ".":
55

56
# CHECK ELEMENT OF ORIGINAL INDICE present in key i_3 , j_3
57
if board[i][j] not in hbox[i_3, j_3]:
58
# #CHECKED IN NEW KEY
59
hbox[i_3, j_3] = hbox[i_3, j_3] + [board[i][j]]
60

61
else:
62
return False
63

64
return True

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0