LeetCode刷题日记-数组-面试题 1275. 找出井字棋的获胜者

题目描述

题目链接:https://leetcode-cn.com/problems/find-winner-on-a-tic-tac-toe-game/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

看到这道题,想起了昨天做的
LeetCode刷题日记-数组-面试题 840. 矩阵中的幻方
个人认为相同之处”在于 列出3*3 矩阵中的所有元素a1,b1,c1,a2,b2,c3,a3,b3,c3,与之不同i的是,该题不是求和而是判断是否存在连续的XXX000,而Python是可以直接用+进行字符串拼接,因此本质上还是可以看作是求和。所有步骤就是一个模拟的过程。
解题代码如下

class Solution:
    def tictactoe(self, moves: List[List[int]]) -> str:
        # 棋盘初始化,
        spots = [ ['']*3 for i in range(3)]
        
        # A放X, B放0
        for i,j in moves[::2]:
            spots[i][j] = "X"     # A放X
        for i,j in moves[1::2]:
            spots[i][j] = "0"     # B放0
           
        # 罗列出3*3矩阵中的每个元素
        a1,b1,c1 = spots[0][0], spots[0][1], spots[0][2]
        a2,b2,c2 = spots[1][0], spots[1][1], spots[1][2]
        a3,b3,c3 = spots[2][0], spots[2][1], spots[2][2]
        
        # 字符串拼接 
        row1, row2, row3 = a1+b1+c1, a2+b2+c2, a3+b3+c3  
        col1, col2, col3 = a1+a2+a3, b1+b2+b3, c1+c2+c3
        diag1, diag2 = a1+b2+c3, c1+b2+a3
        
        # 将八个方向的字符串拼接结果放入列表
        sumlist = [row1, row2, row3, col1, col2, col3, diag1, diag2]
        
        if "XXX" in sumlist:   # 存在连续的“XXX”  --》 A胜
            return "A"
        elif "000" in sumlist:  # 存在连续的"000"” --》 B胜
            return "B"
        elif len(moves)<9:
            return "Pending"
        else:
            return "Draw"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值