栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode:有效的井字游戏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode:有效的井字游戏


思路:
多种情况的判断
逻辑详细看注释

代码:

class Solution:
    def validTicTacToe(self, board: List[str]) -> bool:
        # 第一个是X
        # X总是等于O或等于O + 1
        # 不可以X O 同时胜利
        cnt = 0
        x_cnt = 0
        o_cnt = 0
        for row in board:
            for item in row:
                if item == 'X':
                    x_cnt += 1
                    cnt += 1
                elif item == 'O':
                    o_cnt += 1
                    cnt += 1
        
        #第一个必须X        
        # X = O or X = O + 1
        if x_cnt > o_cnt + 1 or x_cnt < o_cnt:
            return False

        # 判断X或O是否获胜
        x_win = False
        o_win = False

        # 把获胜的八种情况列出来
        eight_situations = []
        # 三行
        for row in board:
            eight_situations.append(row)

        # 三列
        for j in range(3):
            temp = ""
            for i in range(3):
                temp += board[i][j]
            eight_situations.append(temp)
        
        # 两对角
        temp1 = ""
        temp2 = ""
        for i in range(3):
            temp1 += board[i][i]
            temp2 += board[i][2 - i]
        eight_situations.append(temp1)
        eight_situations.append(temp2)

        if 'XXX' in eight_situations:
            x_win = True
        if 'OOO' in eight_situations:
            o_win = True

        # 不可以同时获胜
        if x_win is True and o_win is True:
            return False
        
        # X赢了之后 O不可以动
        if x_win is True and x_cnt == o_cnt:
            return False
        
        # O赢了之后 X不可以动
        if o_win is True and x_cnt == o_cnt + 1:
            return False

        return True
        
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/649044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号