仅以此纪录每日LeetCode所刷题目(可喜可贺,今天终于不是困难题了)
题目描述:
示例:
思路:
今天这道题我没有太好的想法。我个人把这道题当成一道条件筛选题去做了,把不正常的状态剔除掉返回False,其余的状态为正常状态,返回True。
不正常的状态如下:
1、棋盘中棋子O的数量大于棋子X的数量
2、棋盘中棋子X的数量大于棋子O的数量+1
3、棋盘中棋子O的数量等于棋子X的数量的情况下X方(先手方)获胜
4、棋盘中棋子O的数量小于棋子X的数量的情况下O方(后手方)获胜
其中3、4讨论的情况都代表游戏结束了,但是仍然有人继续在棋盘中放下棋子。
代码如下:
class Solution:
def validTicTacToe(self, board: List[str]) -> bool:
dict_word = {"O":0,"X":0," ":0}
dict_word1 = {"O":0,"X":0," ":0}
for i in range(len(board)):
for j in range(len(board[0])):
dict_word[board[i][j]] += 1
if dict_word["O"]>dict_word["X"]:
return False
if dict_word["X"] > dict_word["O"] + 1:
return False
if dict_word["O"] == dict_word["X"]:
if board[0][0] == board[0][1] == board[0][2] == "X":
return False
if board[1][0] == board[1][1] == board[1][2] == "X":
return False
if board[2][0] == board[2][1] == board[2][2] == "X":
return False
if board[0][0] == board[1][0] == board[2][0] == "X":
return False
if board[0][2] == board[1][2] == board[2][2] == "X":
return False
if board[0][1] == board[1][1] == board[2][1] == "X":
return False
if board[0][0] == board[1][1] == board[2][2] == "X":
return False
if board[0][2] == board[1][1] == board[2][0] == "X":
return False
if dict_word["X"] > dict_word["O"]:
if board[0][0] == board[0][1] == board[0][2] == "O":
return False
if board[1][0] == board[1][1] == board[1][2] == "O":
return False
if board[2][0] == board[2][1] == board[2][2] == "O":
return False
if board[0][0] == board[1][0] == board[2][0] == "O":
return False
if board[0][2] == board[1][2] == board[2][2] == "O":
return False
if board[0][1] == board[1][1] == board[2][1] == "O":
return False
if board[0][0] == board[1][1] == board[2][2] == "O":
return False
if board[0][2] == board[1][1] == board[2][0] == "O":
return False
return True