forked from SamirPaulb/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path036_Valid Sudoku.py
68 lines (65 loc) · 2.21 KB
/
036_Valid Sudoku.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# class Solution(object):
# def isValidSudoku(self, board):
# """
# :type board: List[List[str]]
# :rtype: bool
# """
class Solution(object):
def isValidSudoku(self, board):
vset = [0] * 9
hset = [0] * 9
bset = [0] * 9
for i in range(9):
for j in range(9):
curr = board[i][j]
if curr != '.':
index = 1 << (ord(curr) - ord('0'))
if (hset[i] & index) > 0 or\
(vset[j] & index) > 0 or\
(bset[(i / 3) * 3 + j / 3] & index) > 0:
return False
hset[i] |= index
vset[j] |= index
bset[(i / 3) * 3 + j / 3] |= index
return True
# def isValidSudoku(self, board):
# if board is None:
# return True
# for i in range(9):
# table = {}
# for j in range(9):
# curr = board[i][j]
# if curr == '.':
# continue
# else:
# try:
# table[curr] += 1
# return False
# except KeyError:
# table[curr] = 1
# for j in range(9):
# table = {}
# for i in range(9):
# curr = board[i][j]
# if curr == '.':
# continue
# else:
# try:
# table[curr] += 1
# return False
# except KeyError:
# table[curr] = 1
# for i in range(3):
# for j in range(3):
# table = {}
# for k in range(9):
# curr = board[i * 3 + k / 3][j * 3 + k % 3]
# if curr == '.':
# continue
# else:
# try:
# table[curr] += 1
# return False
# except KeyError:
# table[curr] = 1
# return True