有效的井字游戏

昨天在leetcode 刷的题 觉的还是挺有趣的
其实就是一个分类讨论的过程
首先在题目上:
对于一个3*3的棋盘上 要判断 下的棋子是否合法

在我想来 合法的只有三种状态

  1. 没有玩家胜利 “X” 的数量 一定比 “O” 的数量 多一
  2. 玩家一胜利 “X” 的数量 一定比 “O” 的数量 多一 且 玩家二没有胜利 (所以这里需要判断玩家一胜利的次数 并且 玩家二胜利的次数 不可以同时 胜利)
  3. 玩家二胜利 “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 有效的井字游戏相关推荐

  1. LeetCode题解:井字游戏

    井字游戏 设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" ...

  2. LeetCode 794. 有效的井字游戏(分类讨论)

    文章目录 1. 题目 2. 解题 1. 题目 用字符串数组作为井字游戏的游戏板 board.当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true. 该游戏板是一个 3 ...

  3. LeetCode–井字游戏

    LeetCode–井字游戏 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 剑指offer,面试16.04 井字游戏 题目 ...

  4. leetcode470 Java_Java实现 LeetCode 794 有效的井字游戏 (暴力分析)

    794. 有效的井字游戏 用字符串数组作为井字游戏的游戏板 board.当且仅当在井字游戏过程中,玩家有可能将字符放置成游戏板所显示的状态时,才返回 true. 该游戏板是一个 3 x 3 数组,由字 ...

  5. 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不能同时都是赢家,否则 ...

  6. leetcode面试题 16.04. 井字游戏

    设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" &quo ...

  7. leetcode:井字游戏

    力扣794: 用字符串数组作为井字游戏的游戏板 board,判断该游戏板有没有可能最终形成 游戏板是一个 3 x 3 数组,由字符 " ","X" 和 &quo ...

  8. LeetCode - 794 - 有效的井字游戏 - java

    文章目录 题目要求 和 大意 代码 正常代码风格 简约风格(就是能省的符号,就省.能成一行的代码就写成一行) 正常风格代码的 讲解 题目要求 和 大意   代码 正常代码风格 class Soluti ...

  9. LeetCode 348. 判定井字棋胜负(计数)

    文章目录 1. 题目 2. 解题 1. 题目 请在 n × n 的棋盘上,实现一个判定井字棋(Tic-Tac-Toe)胜负的神器,判断每一次玩家落子后,是否有胜出的玩家. 在这个井字棋游戏中,会有 2 ...

最新文章

  1. 线程同步----递归锁
  2. 剑指offer-孩子们的游戏(圆圈中最后剩下的数)
  3. java 线程安全_Java创建线程安全的方法
  4. SQL里学习通配符时LIKE和RLIKE的区别
  5. Ubuntu Linux 18.10下面安装魔法门之英雄无敌3
  6. MySQL松散索引扫描与紧凑索引扫描
  7. 开源硬件_如何参与开源硬件协会
  8. html cursor居中,CSS cursor属性
  9. python matlabplot写字_Matlab中plot基本用法的具体使用
  10. python爬虫什么意思-Python为什么叫爬虫?Python与爬虫有什么关系?
  11. 中怎么提取时间中的月份_怎么提取图片中的文字?花上1分钟学会,轻松提取,按时下班...
  12. 1.4 案例:广告预测、房价预测
  13. 蓝懿IOS实战音乐播放器
  14. QT项目 MyQQ 学习笔记(一)
  15. php多域名跳转,旱的旱死,涝的涝死,中超联赛的怪事
  16. 夜光带你走进Bootstrap(2)
  17. 如何让IE11自动下载安装ActiveX插件并使用网页VLC播放视频
  18. 类似合俊大数据营销CRM系统软件的出路何在?
  19. 【Atlas300T训练产品】【bert模型加载功能】推理过程ckpt中部分参数未加载
  20. 【C语言】goto语句以及strcmp和system的学习

热门文章

  1. Linux下的motion detection(最简单的办公室监控系统) 邮件自动发送
  2. 小米智能家居接入智能家居平台homeassistant的方法
  3. mac 特殊符号的操作
  4. 『VQA认知』如何理解Bias?
  5. 3DMAX游戏角色头发建模教程
  6. PostgreSQL GUC 参数级别介绍
  7. 赚钱:停更是不可能停的,但是有时候你不得不停。
  8. php随机生成0.1到10的随机数
  9. 【转发】IDM fabless foundry
  10. 小技巧使Windows Live Writer网络图片本地化