82 - Nim游戏
题目
你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。
你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
示例:
输入: 4 输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。
解答
似乎玩过这种游戏。记得是要从后往前推算。
拿到最后对方轮次,剩下4个,那么我必赢。因此要制造“最后对手轮留下四个”的局面。即我要拿几个才能留下4个。
换言之,每次我拿完,场面上要留下4的倍数,就能确保胜利。
也就是说,把输入的数对4取余数,只要结果在1-3之内的,就能赢。
Runtime: 56 ms, faster than 38.54% of JavaScript online submissions for Nim Game.
Memory Usage: 33.8 MB, less than 100.00% of JavaScript online submissions for Nim Game.
Runtime: 0 ms, faster than 100.00% of Go online submissions for Nim Game.
Memory Usage: 2 MB, less than 100.00% of Go online submissions for Nim Game.
看来go的运行最低2mb😂
题解说要写成一行,能变快吗?
Runtime: 52 ms, faster than 67.01% of JavaScript online submissions for Nim Game.
Memory Usage: 33.8 MB, less than 100.00% of JavaScript online submissions for Nim Game.
还真能😂😂
Runtime: 0 ms, faster than 100.00% of Go online submissions for Nim Game.
Memory Usage: 1.9 MB, less than 100.00% of Go online submissions for Nim Game.
Last updated
Was this helpful?