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

1. 题目

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.length <= 9
moves[i].length == 2
0 <= moves[i][j] <= 2
moves 里没有重复的元素。
moves 遵循井字棋的规则。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-winner-on-a-tic-tac-toe-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 位运算解题

类似题目:
程序员面试金典 - 面试题 16.04. 井字游戏(计数)
LeetCode 348. 判定井字棋胜负(计数)

  • 将棋盘看做是9个二进制位,所有的获胜状态是可以枚举的,用3个8进制位来表示
class Solution {
public:string tictactoe(vector<vector<int>>& moves) {vector<int> win = {0007,0070,0700,0444,0222,0111,0421,0124};int a = 0, b = 0, bit, i, j;bool flag = true;for(i = 0; i < moves.size(); i++) {	//将整个棋盘看做9个2进制位if(flag)//a先走{bit = moves[i][0]*3+moves[i][1];a |= (1<<bit);if(i >= 4)//走3步才可能赢{for(j = 0; j < 8; j++)if((a&win[j]) == win[j])return "A";//不能写 a == win[j],因为后面走的棋子多了,赢了 a 也肯定不会等于win[j]}}else{bit = moves[i][0]*3+moves[i][1];b |= (1<<bit);if(i >= 5)//走3步才可能赢{for(j = 0; j < 8; j++)if((b&win[j]) == win[j])return "B";}}flag = !flag;//换人下棋}if(moves.size() < 9)return "Pending";        	return "Draw";}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | DSKReG:基于关系GNN的推荐知识图谱可微抽样

笔记整理&#xff1a;李爽&#xff0c;天津大学硕士链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3459637.3482092动机在信息爆炸的时代&#xff0c;推荐系统被广泛研究和应用&#xff0c;以发现用户的偏好信息。RS在冷启动时性能较差&#xff0c;如果将知识图谱(Knowl…

数据开放平台的配置管理

背景 美团是数据驱动的技术公司&#xff0c; 非常重视使用数据的效率。为了达到这个目标&#xff0c;我们将数据以开放平台的形式开放给需求方。例如&#xff0c;帮助需求方开发报表的报表开放平台&#xff0c;帮助需求方获取数据的自助查询平台&#xff0c;让需求方参与数据建…

LeetCode 1271. 十六进制魔术数字(进制转换)

1. 题目 你有一个十进制数字&#xff0c;请按照此规则将它变成「十六进制魔术数字」&#xff1a;首先将它变成字母大写的十六进制字符串&#xff0c;然后将所有的数字 0 变成字母 O &#xff0c;将数字 1 变成字母 I 。 如果一个数字在转换后只包含 {“A”, “B”, “C”, “…

评测任务征集 | 全国知识图谱与语义计算大会(CCKS 2022)

评测任务征集全国知识图谱与语义计算大会&#xff08;CCKS 2022&#xff09;2022年8月25-28日&#xff0c;秦皇岛http://sigkg.cn/ccks2022/全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and SemanticComputing&#xff09;由中国中文信息…

SegmentFault 美团云采访实录

约半年前&#xff0c;美团悄然上线了美团云&#xff08;Meituan Open Services&#xff0c;简称MOS&#xff09;&#xff0c;这是美团网根据自身虚拟化平台开发和运维经验开放的云计算服务&#xff0c;类似AWS。 美团 CEO 王兴可能是中国最知名的连续创业者&#xff0c;曾创办校…

开局一段扯,数据全靠编?真被一篇“神论文”气到了

文 | 苏剑林&#xff08;追一科技&#xff09;编 | 智商掉了一地看来以后我们看论文的时候&#xff0c;不仅要关心论文成绩的可复现性&#xff0c;还要留意它们的求和、均值、方差等有没有算错&#xff0c;否则真的是“无奇不有”&#xff01;&#xff01;这篇文章谈一下笔者被…

LeetCode 147. 对链表进行插入排序(链表)

1. 题目 对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始&#xff0c;该链表可以被认为已经部分排序&#xff08;用黑色表示&#xff09;。 每次迭代时&#xff0c;从输入数据中移除一个元素&#xff08;用红色表示&#xff09;&#xff0c;并原地将其插入到…

征稿 | 软件学报专刊征文:知识赋能的信息系统

伴随着人工智能的浪潮&#xff0c;智慧信息系统的发展方兴未艾&#xff0c;正处于由感知智能到认知智能转变的关键时期。要实现认知智能的系统跃升&#xff0c;离不开知识的赋能。在数字化转型背景下&#xff0c;数据对象和交互方式的日益丰富和变化&#xff0c;对以知识图谱为…

基于Flume的美团日志收集系统(二)改进和优化

在《基于Flume的美团日志收集系统(一)架构和设计》中&#xff0c;我们详述了基于Flume的美团日志收集系统的架构设计&#xff0c;以及为什么做这样的设计。在本节中&#xff0c;我们将会讲述在实际部署和使用过程中遇到的问题&#xff0c;对Flume的功能改进和对系统做的优化。 …

LeetCode 462. 最少移动次数使数组元素相等 II(数学)

1. 题目 给定一个非空整数数组&#xff0c;找到使所有数组元素相等所需的最小移动数&#xff0c;其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。 例如: 输入: [1,2,3] 输出: 2说明&#xff1a; 只有两个动作是必要的&#xff08;记得每一步仅可…

embedding亦福亦祸?XGBoost与LightGBM的新机遇

文 | 水哥源 | 知乎Saying1. 小的性能差异在容易实现面前一文不值&#xff0c;这一点是XGBoost和LightGBM的最大优势2. 没能与embedding很好地结合无疑是树模型的灾难&#xff0c;吃不下巨量的新数据&#xff0c;也打不过DNN&#xff0c;除了一些规模比较小的公司&#xff0c;树…

论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法

转载公众号 | 南大Websoft概述近两年来NLP领域出现了一些富有挑战性的机器阅读理解数据集&#xff0c;如ReClor和LogiQA。这两个数据集中的问题需要对文本进行逻辑推理&#xff0c;然而传统的神经模型不足以进行逻辑推理&#xff0c;传统的符号推理器不能直接应用于文本。为了应…

LeetCode 1026. 节点与其祖先之间的最大差值(二叉树DFS)

1. 题目 给定二叉树的根节点 root&#xff0c;找出存在于不同节点 A 和 B 之间的最大值 V&#xff0c;其中 V |A.val - B.val|&#xff0c;且 A 是 B 的祖先。 &#xff08;如果 A 的任何子节点之一为 B&#xff0c;或者 A 的任何子节点是 B 的祖先&#xff0c;那么我们认为…

凭“难听”上热搜的 idol 们,不如考虑下让 Transformer 帮您作曲?

视频制作 | 白鹡鸰编 | 小轶考虑到 “AI 音乐”这一主题的特殊性&#xff0c;唯有多媒体的视频形式才能更好地给大家带来视听上的多重感受。于是&#xff0c;小屋的白鸟鸟同学在科研间隙连续肝了好几个晚上&#xff0c;才得以完成这次视频。然而在上周的推送中&#xff0c;不知…

YUI3在美团的实践

美团网在2010年引爆了团购行业&#xff0c;并在2012年销售额超过55亿&#xff0c;实现了全面盈利。在业务规模不断增长的背后&#xff0c;作为研发队伍中和用户最接近的前端团队承担着非常大的压力&#xff0c;比如用户量急剧上升带来的产品多样化&#xff0c;业务运营系统的界…

论文浅尝 - ICLR2022 | OntoProtein:融入基因本体知识的蛋白质预训练

论文题目&#xff1a;OntoProtein: Protein Pretraining With Gene Ontology Embedding本文作者&#xff1a;张宁豫&#xff08;浙江大学&#xff09;、毕祯&#xff08;浙江大学&#xff09;、梁孝转&#xff08;浙江大学&#xff09;、程思源&#xff08;浙江大学&#xff09…

LeetCode 540. 有序数组中的单一元素(位运算二分查找)

1. 题目 给定一个只包含整数的有序数组&#xff0c;每个元素都会出现两次&#xff0c;唯有一个数只会出现一次&#xff0c;找出这个数。 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3,7,7,10,11,11] 输出: 10注意: 您的方案应该在 O(log n) 时间复杂度 和 O…

迁移Prompt–解决Prompt Tuning三大问题!

文 | Harris刘鹏飞博士将近代NLP的研究划归为四种范式 [1] 并把预训练语言模型加持下的Prompt Learning看作是近代自然语言处理技术发展的“第四范式”。当我们使用新范式的方法的时候&#xff0c;能够意识到它带来的优异性可能是以某种“人力”牺牲为代价的。而如何让这种人力…

征文 | 2022年全国知识图谱与语义计算大会(CCKS 2022) 征稿通知

2022年全国知识图谱与语义计算大会征稿通知Call for Papers2022年8月25日-28日&#xff0c;秦皇岛征稿截止: 2022年5月22日第十六届全国知识图谱与语义计算大会&#xff08;CCKS: China Conference on Knowledge Graph and Semantic Computing&#xff09;由中国中文信息学会语…

Spring Cloud 和 Dubbo 哪个会被淘汰?

今天在知乎上看到了这样一个问题&#xff1a;Spring Cloud 和 Dubbo哪个会被淘汰&#xff1f;看了几个回答&#xff0c;都觉得不在点子上&#xff0c;所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日&#xff0c;这两个…