leetcode-794-tic-tac-toe

LeetCode #794 Valid Tic-Tac-Toe State

基本思路:统计基本信息+检查。
根据谁赢来分成两类,考察编码者思维条理性,代码难度不难,思维难度中等。

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
class :
def validTicTacToe(self, board):
"""
:type board: List[str]
:rtype: bool
"""
O = 0
X = 0
OOO = 0
XXX = 0
for i in range(3):
# check row
if board[i] == "OOO":
O += 3
OOO += 1
elif board[i] == "XXX":
X += 3
XXX += 1
else:
for j in range(3):
if board[i][j] == "O":
O += 1
if board[i][j] == "X":
X += 1
# check column
if (board[0][i] == board[1][i]) and (board[2][i] == board[1][i]):
if board[0][i] == "X":
XXX += 1
if board[0][i] == "O":
OOO += 1
# check diagnal
if (board[0][0] == board[1][1]) and (board[1][1] == board[2][2]):
if(board[1][1] == "X") :
XXX += 1
if(board[1][1] == "O") :
OOO += 1
if (board[2][0] == board[1][1]) and (board[1][1] == board[0][2]):
if(board[1][1] == "X") :
XXX += 1
if(board[1][1] == "O") :
OOO += 1
print(X,O,XXX,OOO)
# key check part
if XXX + OOO > 1:
return False
if (O > X) or (X > O + 1):
return False
if XXX == 1:
if X != O + 1:
return False
if OOO == 1:
if X != O:
return False
return True