学习目标:

用于记录每日刷的题目为了明年的python组蓝桥杯做准备,今天是打卡的第六天,冲!


原题:有效的井字游戏

题目描述:

给你一个字符串数组 board 表示井字游戏的棋盘。当且仅当在井字游戏过程中,棋盘有可能达到 board 所显示的状态时,才返回 true 。

井字游戏的棋盘是一个 3 x 3 数组,由字符 ' ''X' 和 'O' 组成。字符 ' ' 代表一个空位。

以下是井字游戏的规则:

玩家轮流将字符放入空位(' ')中。
1.玩家 1 总是放字符 'X' ,而玩家 2 总是放字符 'O' 。
2.'X' 和 'O' 只允许放置在空位中,不允许对已放有字符的位置进行填充。
3.当有 3 个相同(且非空)的字符填充任何行、列或对角线时,游戏结束。
4.当所有位置非空时,也算为游戏结束。
5.如果游戏结束,玩家不允许再放置字符。

示例一:

输入:board = ["O    ","     ","     "]
输出:false
解释:玩家 1 总是放字符 "X" 。

示例二:

输入:board = ["XOX","  X  ","     "]
输出:false
解释:玩家应该轮流放字符。

示例三:

输入:board = ["XXX","OXO","XOO"]
输出:true


题解:

思路(分类讨论):

1.题目要求棋盘是否能有效,那么首先要分析游戏的规则。‘X’是先手放置的,那么就可以说明‘X’的棋子个数要不就是和‘O’数量相同,要不就是比‘O’棋子多一个。那么我们就分这两类情况去讨论。

2.如果‘X’棋子与‘O’棋子数相同,那么最后落的子是‘O’棋子。所以不存在‘X’三连的情况,所以只要‘O’棋子连成三连的条数小于 2 就成立(等与2的情况是落最后一个子时恰好连成两个三连)

3.如果'X'棋子比‘O’棋子多一个,那么最后落的子是‘X’棋子。所以不存在‘O’三连的情况,所以只要‘X’连线数比2小就成立

代码实现(Python):

class Solution:def validTicTacToe(self, board):def win(n,board):  #查找有几个三连flag = 0for i in board:  #横向判断三连if i == n+n+n:flag+=1for i in range(3):  #纵向判断三连数if board[0][i] == n and board[1][i] == n and n == board[2][i]:flag+=1if board[0][0] == n and board[1][1] == n and board[2][2] == n:  #正对角线判断flag += 1if board[0][2] == n and board[1][1] == n and board[2][0] == n:  #反对角线判断flag += 1return flagcount_X = 0count_O = 0for i in board:   #对X和O计数for j in i: if j == 'X':count_X += 1elif j == 'O':count_O += 1if count_O == count_X -1:   #如果X比O数量多一个if win('X',board) <= 2 and win('O',board) == 0:return Trueelse:return Falseelif  count_X == count_O:   #如果X和O数量相同if win('X',board) == 0 and win('O',board) <= 2:return Trueelse:return Falseelse:    #数量既不相同,X数量也不比O大一,不存在这种情况return False

【刷题笔记】——day.6 有效的井字游戏相关推荐

  1. Github最强算法刷题笔记.pdf

    资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...

  2. 我收藏的谷歌和阿里大佬的刷题笔记

    金三银四大家在准备校招.社招,或者闲暇的时候,都可以刷刷 Leetcode,保持良好的手感. 之前刷题,一直觉得漫无目的地刷,效率很低.后来发现了两个刷题笔记,谷歌大佬高畅和BAT大佬霜神写的 Lee ...

  3. 三级网络技术刷题笔记

    三级网络技术刷题笔记 RPR与FDDI一样使用双环结构 在RPR环中,源节点向目的节点成功发出的数据帧要由目的节点从环中收回 RPR中每个节点都执行SRP公平算法 RPR环能够在50ms内实现自愈 O ...

  4. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  5. 发现一位大佬的算法刷题笔记PDF

    昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...

  6. 阿里大神的刷题笔记.pdf

    今天在浏览 Github 的时候,发现了一个让人眼前一亮的项目,一本厚厚的算法刷题笔记,来自一位阿里的资深技术大神. 作者在大学期间参加过三年的 ACM 比赛,对算法有着较为透彻的了解,在找工作之前, ...

  7. 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开

    有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...

  8. 经典算法刷题笔记pdf

    昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...

  9. 【c++算法刷题笔记】——洛谷2

    1. 洛谷练习--P1579 哥德巴赫猜想(升级版) 题目描述: 现在请你编一个程序验证哥德巴赫猜想. 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数. 输入格式: 仅有一行,包含一 ...

  10. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

最新文章

  1. 大学加权平均分计算器_墨尔本大学商学院(MBS)2021研究生、博士、本科、预科录取要求更新...
  2. iOS 9音频应用播放音频之音量设置与声道设置
  3. C++ 出版公司(继承)
  4. 关于变量在循环内声明还是在循环外声明
  5. Java Spring注解实现分析之@requestMapping工作原理
  6. go mysql 条件查询_go-sql-driver包 实现mysql不定字段查询
  7. Kafka Streams 剖析
  8. 小学奥林匹克计算机怎么学,小学奥林匹克数学教程1--6年级全套
  9. 图论专项shortest_paths:UVa 10246
  10. 【商品架构day9】阿里商品的标题那么长、怎么办
  11. 非诚勿扰2最后李香山人生告别会上的孙红雷的台词
  12. 如何让他喜欢你?让他多看一眼
  13. 大脑的终极秘密——从狮子也有意识谈起
  14. HTML(day2)
  15. SecureCRT中文乱码解决(汇总)
  16. JAVA技术及其应用实验三(抽象类和匿名类)
  17. 春节灯笼Html代码实现+点击页面出现文字
  18. JAVA MemCache 史无前例的详细讲解
  19. 《实战数据库营销——大数据时代轻松赚钱之道》新书试读+文摘
  20. 股票常识|股票基础知识

热门文章

  1. python做es的聚合统计和分页读取
  2. 羊皮卷的故事-第三章
  3. 【houdini vex】方形拼图
  4. 我喜欢用计算机300,我喜欢夏天作文300字
  5. uniapp生成商品分享海报
  6. docker-compose部署MinIO分布式集群
  7. python 3D绘图 基础
  8. input输入框不能选中
  9. FD2606S是高压高速半桥栅极驱动器IC
  10. 针对乐视网的主页无法打开的解决办法