Tic Tac Toe 三子棋/N子棋

设计一个Tic Tac Toe

根据图片可以知道,只要vertically, horizontally, 两个斜对角线  一共4个路线上 某一个路线上连了N个子就算获胜!

move(x, y, player) 是下棋function的参数。

return 只要return 谁获胜,要么player1, 要么player2, 要么没人获胜。【不需要画出棋盘】

看到了整个逻辑,但是还是非常难实现。 怎么判断有N个子连在了一起?

我初步的想法是,每当move一步之后,move(x, y, player). 把同一个x的row扫描一下,看看是不是全部== player, 是的话宣布胜利。 然后扫描一下y的col,看看是不是都是player,是的话宣布胜利。对角线的话就有点麻烦了,因为有的点是不存在对角线的,有的点在对角线上。 最中心的点还在2条对角线上。【不过后来想想其实还好,只要x !=y的,我们直接不查对角线。 如果x==y的,把两条对角线上查一下, 虽然有点费时间,但好歹也算完成任务。】

O(n) 应该可以搞定。




优化:【超级聪明。。。Player1的添加+1, Player2的添加-1, 抵消】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,923评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,586评论 19 139
  • 版本记录 前言 工程中我们总需要为各种各样的小功能进行封装,这样团队使用的时候,可以调用这些封装好的小模块或者小功...
    刀客传奇阅读 772评论 0 0
  • 1、善于倾听 良好的沟通=三分之二的倾听+三分之一的表达,我们有两只耳朵,一个嘴巴,是有原因的。只有认真去听了,才...
    亮仔少爷阅读 137评论 0 0
  • 如果不是不是机缘巧合留校两个月,我不会知道餐(也就是吃)如此令人困惑和不安。 搬来新校区后吃的的第一顿食堂饭让我吃...
    不朽的牛轧糖阅读 456评论 0 0

友情链接更多精彩内容