LeetCode题目笔记——292. Nim 游戏 (脑筋急转弯C++/Python)

题目描述

你和你的朋友,两个人一起玩 Nim 游戏:

桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回
false 。

示例 1:

输入:n = 4 输出:false 解释:以下是可能的结果:

  1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。
  2. 移除2个石子。你的朋友移走2块石头,包括最后一块。你的朋友赢了。
    3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。 在所有结果中,你的朋友是赢家。

示例 2:
输入:n = 1 输出:true
示例 3:

输入:n = 2 输出:true

提示:

1 <= n <= 231 - 1

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

题目难度——简单

方法一:脑筋急转弯

  乍一看这个题目好像很难,要考虑很多种情况,我先手,对方后手,每次可以拿1-3颗,那在石头充足的情况下每一轮拿取就有3×3=9种情况,要在这9种情况下判断谁谁输谁赢,看起来确实很复杂。
  但是!我知道你很急,但你先别急,题目已经给提示了,在n=4的时候,我们怎么样都是必输,那n=4必输,n=8呢,n=12呢,n=。。。呢?可以发现,只要是4的整数倍,我们最后还是会回到n=4的情况,所以只要是4的整数倍,我们必输。再看看不是4的情况,小于4自不必多说,肯定是我们赢,大于4的话,比如5,我们可以先手拿1个,形式就变成了了对手先手情况下只有4个石头。n=6,我们先手拿两个,n再大,我们也可以经过多轮的拿取,最后到拿了x个之后让对方面临只剩4个的情况。所以,这道题我们就只用判断n是不是4的整数倍即可。

代码/C++/Python

class Solution {
public:
    bool canWinNim(int n) {
        return n % 4 != 0;
    }
};

在这里插入图片描述

class Solution:
    def canWinNim(self, n: int) -> bool:
        return n % 4 != 0

总结

  这道题乍一看好像挺难,但其实是个脑筋急转弯。只有一行求余运算的代码,所以时间复杂度是O(1),空间也只有O(1)。

pip install USART
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
292. Nim Game [easy] (Python)
Coder_Orz的博客
05-10 3358
题目链接https://leetcode.com/problems/nim-game/题目原文 You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stone
LeetCode题目笔记——345. 反转字符串中的元音字母
一个苦逼研究僧的博客
10-06 586
LeetCode——345.反转字符串中的元音字母。双指针解决,打败99.79。
LeetCode 292. Nim游戏
hpuhjl的专栏
07-03 1904
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是...
leetcode-292 Nim游戏脑筋急转弯
qq_36950604的博客
02-05 425
问题描述: 你和你的朋友,两个人一起玩Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/nim-game 著作权归领扣网络所有。商业转载请联..
LeetCode 292 Nim Game(Nim游戏
weixin_34241036的博客
12-23 171
翻译 你正在和你的朋友们玩下面这个Nim游戏:桌子上有一堆石头,每次你从中去掉1-3个。谁消除掉最后一个石头即为赢家。你在取出石头的第一轮。 你们中的每一个人都有着聪明的头脑和绝佳的策略。写一个函数来确定对于给定的数字是否你可以赢得这场比赛。 例如,如果堆中有4个石头,那么你永远也无法赢得比赛:无论你移除了1、2或3个石头,最后一...
leetcode——Nim游戏
zaishaoyi的专栏
01-28 317
题目: 你和你的朋友,两个人一起玩Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为n的情况下赢得游戏。如果可以赢,返回true;否则,返回false。 示例: 1、 输入:n = 4 输出:false 解释:如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还...
LeetCode刷题笔记——56. 合并区间
01-20
一、题目描述: 二、解题分析: 1、解析   1)先对列表进行排序   2)判断两个相邻区间是否有交集 2、代码实现 class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: intervals...
leetcode练习题——1. 两数之和(python实现)
01-20
leetcode练习题·简单组——1. 两数之和(python练习)题目+思路题目思路代码实现 以下解题思路,仅表示个人做题思路或引荐别人的方法——如有引用我会标注出来的 题目+思路 题目 给定一个整数数组 nums 和一个目标...
LeetCode——292. Nim 游戏(Nim Game)[简单]——分析及代码(Java)
江南土豆的博客
09-18 631
LeetCode——292. Nim 游戏[Nim Game][简单]——分析及代码[Java]一、题目二、分析及代码1. 数学(1)思路(2)代码(3)结果三、其他 一、题目 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false
MangoDowner#clear-leetcode#292.Nim游戏1
07-25
1、当有``1/2/3``块石头的时候,我们先手直接赢了 2、当有``4``块石头的时候,我们直接输了 3、当有``5/6/7``块石头的时候,我们可以拿走``
leetcode nim游戏
yanchuner1的博客
10-12 213
题目描述:桌上一堆石头,你和你的朋友,每次拿一到三块,谁拿完最后一块,谁获胜,你是先手,是判断你是否能成功。 def canWinNim(self,n): " " " :type:int rtype:bool " " " if n%4==0: ...
leetcode NIM游戏
zxcv260072的博客
10-12 220
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块...
LeetCode Nim游戏
hestyle的博客
03-07 372
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头...
Leetcode:Nim游戏
qq_23523409的博客
11-26 217
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;   因为无论你拿走 1 块、2 块 还是 3...
leetcode 292. Nim游戏(Nim Game)
一叶之修的博客
09-16 396
你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。 你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。 示例: 输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;   因为无论你拿走 1 块、2 块 还是 3...
LeetCode292Python)—— Nim 游戏(简单)
最新发布
m0_61661179的博客
12-07 3万+
概述:请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。
P2197 【模板】nim 游戏python3实现)
青少年趣味编程
02-02 690
【模板】nim 游戏 - 洛谷 """ P2197 【模板】nim 游戏(python3实现) https://www.luogu.com.cn/problem/P2197 """ t=int( input() ) while t>0: n=int(input()) ans=0 shu=list(map(int,input().split())) for i in range( n):
Nim游戏
wang19961023的博客
12-20 104
你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。 示例 1: 输入:n = 4 输出:false 解释:如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你
苏大Python复试上机:LeetCode高频题集——英语字母顺序挑战
在苏州大学的Python复试上机环节,学生可能会被要求解决一系列来自LeetCode的编程问题,以检验他们的编程能力和对Python的理解。这些题目涵盖了多个主题,包括但不限于字符串处理、数组操作、哈希表应用、数学算法、...
写文章

热门文章

  • win11安装WSL2(以拯救者游戏本为例,附可能出现的问题及解决) 13000
  • 当你问ChatGPT一些奇奇怪怪的问题 9136
  • win11安装deepin20.6双系统(双硬盘) 7769
  • Python编程技巧和需要注意的地方——Pro 7637
  • UE5学习笔记(1)——从源码开始编译安装UE5 7081

分类专栏

  • 学习笔记 31篇
  • LeetCode面试题 14篇
  • 力扣周赛题记录 1篇
  • 论文阅读记录 4篇
  • C/C++ 15篇
  • LeetCode 69篇
  • 好东西 14篇
  • 系统 5篇
  • 实验 7篇
  • 编译原理 3篇
  • python实战 5篇
  • 词法分析 1篇
  • python 23篇
  • 深度学习基础 2篇
  • 合肥工业大学 3篇

最新评论

  • UE5学习笔记(1)——从源码开始编译安装UE5

    咖肥猫: 我好像没有这一项(Developer Editor)

  • 肥 工 大学编译原理 高分课程设计(四元式生成,python实现GUI)

    m0_74218923: 发错链接了

  • 肥工大学编译原理 高分实验(python图形界面实现LL1和LR1文法)

    原来你也。。: 大佬,uml图怎么自动生成的?

  • 合肥工业大学编译原理实验三 LR(1)分析法

    原来你也。。: 本人用set装项目集,写的很痛苦表情包

  • UE5学习笔记(2)——打包第一个安卓demo(附碰到的问题)

    一包二重积分: 这两个摇杆怎么去了

最新文章

  • UE5学习笔记(2)——打包第一个安卓demo(附碰到的问题)
  • UE5学习笔记(1)——从源码开始编译安装UE5
  • 斐波那契堆——怎么发明一种非常聪明的数据结构——学习笔记
2023年35篇
2022年56篇
2021年4篇
2020年10篇
2019年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢骆驼雕塑公司电话重庆玻璃钢雕塑维修金昌人物玻璃钢雕塑安装上海方形玻璃钢花盆淄博玻璃钢海豚雕塑价格玻璃钢雕塑防腐美陈商场海报制作家电商场美陈布置张掖广场玻璃钢雕塑定制四平玻璃钢雕塑制造厂家玻璃钢中国人物雕塑南京商场玻璃钢雕塑定制仿铜西式玻璃钢雕塑厂家找哪家徐州玻璃钢广场雕塑玻璃钢动物雕塑批发商西藏玻璃钢雕塑原理性价比高的生产玻璃钢雕塑厂家大型商场创意商业美陈品牌四川超市商场美陈怎么样环保玻璃钢雕塑设计广州动物玻璃钢雕塑制作东莞游乐园玻璃钢雕塑设计河南玻璃钢雕塑生产厂家枣庄玻璃钢卡通雕塑南宁奔技玻璃钢雕塑吉林玻璃钢广场雕塑厂家西藏玻璃钢卡通草莓雕塑定西玻璃钢植物雕塑多少钱山东室内商场美陈生产企业大型玻璃钢雕塑大全香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化