【数组-简单】1275. 找出井字棋的获胜者

python-leetcode-1275. 找出井字棋的获胜者 这个问题可以通过模拟井字棋的进程来解决。:一个 3x3 的二维数组,初始时所有格子都是空格 (' ')。:遍历给定的moves数组,每次根据轮次(A 或 B)更新棋盘的相应位置。:每次移动后,检查是否有玩家达成了获胜条件(即三颗相同的棋子排成一行、列或对角线)。如果有玩家获胜,返回该玩家的标识符('A' 或 'B')。如果所有格子已被填满且没有获胜者,返回 "Draw"。如果还有未填充的格子并且没有获胜者,返回 "Pending"。 阅读详情

【题目】
A 和 B 在一个 3 x 3 的网格上玩井字棋。
井字棋游戏的规则如下:

玩家轮流将棋子放在空方格 (" ") 上。
第一个玩家 A 总是用 "X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。
"X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。
只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。
如果所有方块都放满棋子(不为空),游戏也会结束。
游戏结束后,棋子无法再进行任何移动。

给你一个数组 moves,其中每个元素是大小为 2 的另一个数组(元素分别对应网格的行和列),它按照 A 和 B 的行动顺序(先 A 后 B)记录了两人各自的棋子位置。
如果游戏存在获胜者(A 或 B),就返回该游戏的获胜者;如果游戏以平局结束,则返回 “Draw”;如果仍会有行动(游戏未结束),则返回 “Pending”。
你可以假设 moves 都 有效(遵循井字棋规则),网格最初是空的,A 将先行动。
【示例 1】
输入:moves = [[0,0],[2,0],[1,1],[2,1],[2,2]]
输出:“A”
解释:“A” 获胜,他总是先走。
"X " "X " "X " "X " "X "
" " -> " " -> " X " -> " X " -> " X "
" " "O " "O " "OO " “OOX”
【示例 2】
输入:moves = [[0,0],[1,1],[0,1],[0,2],[1,0],[2,0]]
输出:“B”
解释:“B” 获胜。
"X " "X " "XX " “XXO” “XXO” “XXO”
" " -> " O " -> " O " -> " O " -> "XO " -> "XO "
" " " " " " " " " " "O "
【示例 3】
输入:moves = [[0,0],[1,1],[2,0],[1,0],[1,2],[2,1],[0,1],[0,2],[2,2]]
输出:“Draw”
输出:由于没有办法再行动,游戏以平局结束。
“XXO”
“OOX”
“XOX”
【示例 4】
输入:moves = [[0,0],[1,1]]
输出:“Pending”
解释:游戏还没有结束。
"X "
" O "
" "
【提示】

1 <= moves.length <= 9
moves[i].length == 2
0 <= moves[i][j] <= 2
moves 里没有重复的元素。
moves 遵循井字棋的规则。

【代码】
在这里插入图片描述

class Solution:
    def tictactoe(self, moves: List[List[int]]) -> str:
        qipan=[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]
        flag=['x','o']
        success=["A","B"]
        for i in range(len(moves)):
            if qipan[moves[i][0]][moves[i][1]]==-1:
                qipan[moves[i][0]][moves[i][1]]=flag[i%2]
                winner=None
                if qipan[0][0]==qipan[0][1]==qipan[0][2]:
                    winner=qipan[0][0]
                elif qipan[1][0]==qipan[1][1]==qipan[1][2]:
                    winner=qipan[1][0]
                elif qipan[2][0]==qipan[2][1]==qipan[2][2]:
                    winner=qipan[2][0]
                elif qipan[0][0]==qipan[1][0]==qipan[2][0]:
                    winner=qipan[0][0]
                elif qipan[0][1]==qipan[1][1]==qipan[2][1]:
                    winner=qipan[0][1]
                elif qipan[0][2]==qipan[1][2]==qipan[2][2]:
                    winner=qipan[0][2]
                elif qipan[0][0]==qipan[1][1]==qipan[2][2]:
                    winner=qipan[0][0]
                elif qipan[0][2]==qipan[1][1]==qipan[2][0]:
                    winner=qipan[1][1]
                if winner in flag:
                    return success[flag.index(winner)]
        print(qipan)
        ans="Draw"
        for x in qipan:
            if -1 in x:
                ans="Pending"
        return ans

【优化1】
在这里插入图片描述

class Solution:
    def tictactoe(self, moves: List[List[int]]) -> str:
        wins = [
            [(0, 0), (0, 1), (0, 2)],
            [(1, 0), (1, 1), (1, 2)],
            [(2, 0), (2, 1), (2, 2)],
            [(0, 0), (1, 0), (2, 0)],
            [(0, 1), (1, 1), (2, 1)],
            [(0, 2), (1, 2), (2, 2)],
            [(0, 0), (1, 1), (2, 2)],
            [(0, 2), (1, 1), (2, 0)],
        ]
        qipan=[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]
        flag=['x','o']
        success=["A","B"]
        for i in range(len(moves)):
            if qipan[moves[i][0]][moves[i][1]]==-1:
                qipan[moves[i][0]][moves[i][1]]=flag[i%2]
                winner=None
                for x in wins:
                    if qipan[x[0][0]][x[0][1]]==qipan[x[1][0]][x[1][1]]==qipan[x[2][0]][x[2][1]]:
                        winner=qipan[x[0][0]][x[0][1]]        
                        if winner in flag:
                            return success[flag.index(winner)]
        ans="Draw"
        for x in qipan:
            if -1 in x:
                ans="Pending"
        return ans

【优化2】
在这里插入图片描述

class Solution:
    def tictactoe(self, moves: List[List[int]]) -> str:
        wins = [
            [(0, 0), (0, 1), (0, 2)],
            [(1, 0), (1, 1), (1, 2)],
            [(2, 0), (2, 1), (2, 2)],
            [(0, 0), (1, 0), (2, 0)],
            [(0, 1), (1, 1), (2, 1)],
            [(0, 2), (1, 2), (2, 2)],
            [(0, 0), (1, 1), (2, 2)],
            [(0, 2), (1, 1), (2, 0)],
        ]
        qipan=[[-1,-1,-1],[-1,-1,-1],[-1,-1,-1]]
        flag=['x','o']
        success=["A","B"]
        for i in range(len(moves)):
            if qipan[moves[i][0]][moves[i][1]]==-1:
                qipan[moves[i][0]][moves[i][1]]=flag[i%2]
                winner=None
                for x in wins:
                    if qipan[x[0][0]][x[0][1]]==qipan[x[1][0]][x[1][1]]==qipan[x[2][0]][x[2][1]]:
                        winner=qipan[x[0][0]][x[0][1]]        
                        if winner in flag:
                            return success[flag.index(winner)]
        return "Draw" if len(moves) == 9 else "Pending"
基于RFM模型的电商零售数据分析 E-Commerce Data 数据集介绍 E-Commerce Data Actual transactions from UK retailer 数据集地址(kaggle) https://www.kaggle.com/carrie1/ecommerce-data/kernels 该数据来源于kaggle,是一家注册在英国的电子商务网站的2010年12月份-2011年12月份之间的... 阅读详情

相关推荐

Oracle 常用语法汇总

CREATE TABLE 表名(COMMENT ON COLUMN 注释;-- 创建一个学生表STUDENT_ID NUMBER(10) PRIMARY KEY, -- 学生ID,主键FIRST_NAME VARCHAR2(50) NOT NULL, -- 学生名字,不允许为空LAST_NAME VARCHAR2(50) NOT NULL, -- 学生姓氏,不允许为空EMAIL VARCHAR2(100) UNIQUE, -- 学生电子邮箱,唯一。

拽着尾巴的鱼儿的博客 2159

leetcode 1275. 找出井字棋的获胜者(C++)

A和B在一个3x3的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用"X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。 "X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空)...

qq_27060423的博客 600

博途V17 & PLCSIM & FactoryIO 连接教程

PLCSIM V17 和 FactoryIO 连接教程前言一、软件版本二、连接步骤1. 连接PLCSIM2. 博途编程3.连接FactoryIO总结 前言 该文详细讲解了新手入门博途,并通过使用自带PLCSIM和FactoryIO实现连接。 一、软件版本 TIA Portal V17 S7-PLCSIM V17 Factory IO V2.5.1 二、连接步骤 1. 连接PLCSIM 打开PLCSIM 进入项目模式 新建仿真项目 2. 博途编程 将F

soledad_chao的博客 2万+

LeetCode1275.找出井字棋的获胜者

LeetCode1275.找出井字棋的获胜者题解

weixin_60335028的博客 482

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

从原理图到代码:深入解析SX1278 LoRa模块与STM32的SPI通信驱动(附完整工程)

本文深入解析了SX1278 LoRa模块与STM32的SPI通信驱动实现,从硬件原理图到完整工程代码,详细介绍了LoRa技术的通信原理、寄存器配置、SPI接口设计及低功耗优化策略。适合物联网开发者和嵌入式工程师提升远距离无线通信能力,附完整工程代码助力快速开发。

weixin_42715608的博客 425

[数组]leetcode1275:找出井字棋的获胜者(easy)

题目: 1275. 找出井字棋的获胜者 题解: 思路:暴力枚举(说实话我是笨蛋,再打比赛的时候这种小数据的枚举题都没做好,我是笨蛋) 获胜的方式也就总共8种:三行、三列、两条对角线。 然后把moves当成一维数组使用,注意二维数组与一维数组的转换(每行的个数*i+j) 代码如下: class Solution { public: string tictactoe(vector&...

algsup 907

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

leetcode 1275. Find Winner on a Tic Tac Toe Game 找出井字棋的获胜者-耗时100

Problem:耗时100%,首先初始化矩阵,然后赋值的,最后判断谁赢了。

邹九的个人博客 140

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 253

2026年数学建模国赛论文排版规范:Word与LaTeX终极对比及模板

提前演练:不要等到比赛开始才第一次使用排版工具。至少在赛前一个月完成1-2篇模拟论文的全流程排版练习。建立检查清单:基于国赛规范制定排版检查清单,在提交前逐项核对——公式编号连续?图表引用准确?参考文献完整?页数不超限?善用模板但不止于模板:模板提供的是起点而非终点。根据自身需求调整宏包配置和样式参数,理解每一行配置的含义。关注评审体验:从评委的视角审视论文——重点内容是否突出?逻辑结构是否清晰?视觉层次是否合理?备份与容错:无论使用何种工具,建立多级备份机制。本地、云端、U盘各存一份,且定期保存历史版本。

YOLO 211

Leetcode 1275:找出井字棋的获胜者(超详细的解法!!!)

A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。 “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空),游戏也会...

coordinate的博客 1809

《二、企业级监控系统之Prometheus监控node_exporter》

文章目录一、部署node_exporter服务二、部署prometheus服务2.1、部署node_exporter服务三、grafana之添加数据源四、grafana之导入监控模板五、grafana之修改模板变量六、grafana之修改仪表板变量总结 > 这里是引用 一、部署node_exporter服务 docker run -d --restart=always --name node_exporter --net=“host” --pid=“host” -v “/:/host:ro,

东城绝神 1万+

找出井字棋的获胜者 - 简单

C++数组 - 八皇后 - 困难-优快云博客。

ElseWhereR的博客 1102

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

leetcode 1275. 找出井字棋的获胜者(待研究)

【题目】1275. 找出井字棋的获胜者 A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。 “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空),游戏也会结束。 游戏结束后,棋子无法再进行任何移动。 给你一个数组 moves

Sophia_fez的博客 578

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

1275.找出井字棋的获胜者Java

1275.找出井字棋的获胜者Java 题目描述 A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。 “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空),游戏也会结束。 游戏结束后,棋子无法再进行任何移动。 给你一个数组 mov

qq_35253136的博客 386

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

1275. 找出井字棋的获胜者

,就返回该游戏的获胜者;如果游戏以平局结束,则返回。的棋盘上进行的游戏。如果仍会有行动(游戏未结束),则返回。由于没有办法再行动,游戏以平局结束。规则),网格最初是空的,"A" 获胜,他总是先走。如果游戏存在获胜者(

2401_84341430的博客 529

【每日一题】1275. 找出井字棋的获胜者

每日一题

C_Ryson的博客 379

【力扣 1275】找出井字棋的获胜者 C++题解(位集合+位运算+模拟)

A 和 B 在一个 3 x 3 的网格上玩井字棋。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (" ") 上。第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。“X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移动。

HEX9CF的技术博客 1235

0302leetcode-1672.最富有客户的资产总量、1275找出井字棋的获胜者、1572.矩阵对角线元素之和

给你一个m x n的整数网格accounts,其中是第位客户在第j家银行托管的资产数量。返回最富有客户所拥有的。客户的就是他们在各家银行托管的资产数量之和。最富有客户就是最大的客户。6两位客户都是最富有的,资产总量都是 6 ,所以返回 6。10= 6= 10= 8第 2 位客户是最富有的,资产总量是 1017。

qq_56101688的博客 1189

力扣——编程基础 1275. 找出井字棋的获胜者

井字棋 是由两个玩家 A 和 B 在 3 x 3 的棋盘上进行的游戏。井字棋游戏的规则如下:玩家轮流将棋子放在空方格 (’ ') 上。第一个玩家 A 总是用 ‘X’ 作为棋子,而第二个玩家 B 总是用 ‘O’ 作为棋子。‘X’ 和 ‘O’ 只能放在空方格中,而不能放在已经被占用的方格上。只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。如果所有方块都放满棋子(不为空),游戏也会结束。游戏结束后,棋子无法再进行任何移动。

m0_56222212的博客 408

力扣 1275.找出井字棋的获胜者

,就返回该游戏的获胜者;如果游戏以平局结束,则返回 "Draw";如果仍会有行动(游戏未结束),则返回 "Pending"。的另一个数组(元素分别对应网格的行和列),它按照。(遵循井字棋规则),网格最初是空的,由于没有办法再行动,游戏以平局结束。)记录了两人各自的棋子位置。"A" 获胜,他总是先走。,其中每个元素是大小为。如果游戏存在获胜者(

2301_76742087的博客 498

LeetCode 1275. 找出井字棋的获胜者(位运算)

1. 题目 A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。 “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空...

Michael是个半路程序员 2048

【Python】【难度:简单】Leetcode 1275. 找出井字棋的获胜者

A 和B在一个3x3的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用"X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。 "X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空),游戏也会结束。 游戏结束后,棋子无法再进行任何移动。 给你一个数组 moves,其中每个元素是大小为 2 的另一个数组...

thomashhs12的博客 359

Leetcode—1275. 找出井字棋的获胜者【简单】

Leetcode—1275. 找出井字棋的获胜者【简单】

Atticus的博客 226

1275 找出井字棋的获胜者

题目描述: A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 “X” 作为棋子,而第二个玩家 B 总是用 “O” 作为棋子。 “X” 和 “O” 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(非空)棋子排成一条直线(行、列、对角线)时,游戏结束。 如果所有方块都放满棋子(不为空),游戏也会结束。 游戏结束后,棋子无法再进行任何移动。 给你一个数组 moves,其中每个元素是大小为 2 的另

weixin_44171872的博客 304
上一篇: 【数组-简单】1331. 数组序号转换
下一篇: 【数组+简单】面试题 16.11. 跳水板
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值