leetcode 有效的井字游戏
有效的井字游戏
昨天在leetcode 刷的题 觉的还是挺有趣的
其实就是一个分类讨论的过程
首先在题目上:
对于一个3*3的棋盘上 要判断 下的棋子是否合法
在我想来 合法的只有三种状态
- 没有玩家胜利 “X” 的数量 一定比 “O” 的数量 多一
- 玩家一胜利 “X” 的数量 一定比 “O” 的数量 多一 且 玩家二没有胜利 (所以这里需要判断玩家一胜利的次数 并且 玩家二胜利的次数 不可以同时 胜利)
- 玩家二胜利 “X” 的数量 = “O” 的数量 且 玩家一没有胜利 (所以这里需要判断玩家一胜利的次数 并且 玩家二胜利的次数 不可以同时 胜利)
class Solution {public static boolean validTicTacToe(String[] board) {int xNum = 0;int oNum = 0;int xWin = 0;int oWin = 0;
// 判断 xNum oNum 的数量 并将位置存到 Pos 中String[][] Pos = new String[3][3];for (int i = 0; i < board.length; i++) {byte[] bytes = board[i].getBytes();for (int j = 0; j < bytes.length; j++) {if (bytes[j] == 'O') {Pos[i][j] = "O";oNum++;continue;}if (bytes[j] == 'X') {Pos[i][j] = "X";xNum++;continue;}Pos[i][j] = " ";}}// 判断x的胜利次数和 o 的胜利次数 行列 for (int i = 0; i < 3; i++) {if (Pos[i][0] == ("X") && Pos[i][1] == "X" && Pos[i][2] == "X" || Pos[0][i] == "X" && Pos[1][i] == "X" && Pos[2][i] == "X") {xWin++;}if (Pos[i][0] == ("O") && Pos[i][1] == "O" && Pos[i][2] == "O" || Pos[0][i] == "O" && Pos[1][i] == "O" && Pos[2][i] == "O") {oWin++;}}// 斜的if (Pos[0][0] == "X" && Pos[1][1] == "X" && Pos[2][2] == "X"){xWin++;}if (Pos[2][0] == "X" && Pos[1][1] == "X" && Pos[0][2] == "X"){xWin++;}if (Pos[0][0] == "O" && Pos[1][1] == "O" && Pos[2][2] == "O"){oWin++;}if (Pos[2][0] == "O" && Pos[1][1] == "O" && Pos[0][2] == "O") {oWin++;}// 棋子存放的基本 x的数量 和 o的数量if (((xNum - oNum) == 1) || (xNum - oNum) == 0){// x胜利的合法条件 o胜利的合法条件if(((xWin>0&&oWin == 0) && ((xNum - oNum) == 1) || (xWin == 0 && oWin > 0) && (xNum - oNum) == 0) ) {return true;}// 如果 x的数量和 o的数量 都为0 则棋盘在初始化 可以为真if (oNum == 0 && xNum == 0){return true;}// 没有胜利者 也返回 真 到最后if (xWin == 0 && oWin == 0){return true;}}// 其他的状态都为 假return false;}}
总结 : 这是典型的分类讨论的类型的题目
有问题可以私信我 可以一起找我讨论下
leetcode 有效的井字游戏相关推荐
- LeetCode题解:井字游戏
井字游戏 设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" ...
- LeetCode 794. 有效的井字游戏(分类讨论)
文章目录 1. 题目 2. 解题 1. 题目 用字符串数组作为井字游戏的游戏板 board.当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true. 该游戏板是一个 3 ...
- LeetCode–井字游戏
LeetCode–井字游戏 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 剑指offer,面试16.04 井字游戏 题目 ...
- leetcode470 Java_Java实现 LeetCode 794 有效的井字游戏 (暴力分析)
794. 有效的井字游戏 用字符串数组作为井字游戏的游戏板 board.当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true. 该游戏板是一个 3 x 3 数组,由字 ...
- leetcode 794. Valid Tic-Tac-Toe State | 794. 有效的井字游戏(Java)
题目 https://leetcode.com/problems/valid-tic-tac-toe-state/ 题解 1.X必须比O多1个或者相同,否则false 2.X和O不能同时都是赢家,否则 ...
- leetcode面试题 16.04. 井字游戏
设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...
- leetcode:井字游戏
力扣794: 用字符串数组作为井字游戏的游戏板 board,判断该游戏板有没有可能最终形成 游戏板是一个 3 x 3 数组,由字符 " ","X" 和 &quo ...
- LeetCode - 794 - 有效的井字游戏 - java
文章目录 题目要求 和 大意 代码 正常代码风格 简约风格(就是能省的符号,就省.能成一行的代码就写成一行) 正常风格代码的 讲解 题目要求 和 大意 代码 正常代码风格 class Soluti ...
- LeetCode 348. 判定井字棋胜负(计数)
文章目录 1. 题目 2. 解题 1. 题目 请在 n × n 的棋盘上,实现一个判定井字棋(Tic-Tac-Toe)胜负的神器,判断每一次玩家落子后,是否有胜出的玩家. 在这个井字棋游戏中,会有 2 ...
最新文章
- 线程同步----递归锁
- 剑指offer-孩子们的游戏(圆圈中最后剩下的数)
- java 线程安全_Java创建线程安全的方法
- SQL里学习通配符时LIKE和RLIKE的区别
- Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
- MySQL松散索引扫描与紧凑索引扫描
- 开源硬件_如何参与开源硬件协会
- html cursor居中,CSS cursor属性
- python matlabplot写字_Matlab中plot基本用法的具体使用
- python爬虫什么意思-Python为什么叫爬虫?Python与爬虫有什么关系?
- 中怎么提取时间中的月份_怎么提取图片中的文字?花上1分钟学会,轻松提取,按时下班...
- 1.4 案例:广告预测、房价预测
- 蓝懿IOS实战音乐播放器
- QT项目 MyQQ 学习笔记(一)
- php多域名跳转,旱的旱死,涝的涝死,中超联赛的怪事
- 夜光带你走进Bootstrap(2)
- 如何让IE11自动下载安装ActiveX插件并使用网页VLC播放视频
- 类似合俊大数据营销CRM系统软件的出路何在?
- 【Atlas300T训练产品】【bert模型加载功能】推理过程ckpt中部分参数未加载
- 【C语言】goto语句以及strcmp和system的学习