LeetCode 0292.Nim 游戏:脑筋急转弯

【LetMeFly】292.Nim 游戏:脑筋急转弯

力扣题目链接:https://leetcode.cn/problems/nim-game/

你和你的朋友,两个人一起玩 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

方法一:脑筋急转弯(看能否整除4)

这种题可以模拟几个试试。当轮到我时:

  • 1、2、3必胜
  • 4必输(不论拿多少个剩下的必定是1、2、3,下一个人必胜)
  • 5、6、7必胜(5、6、7都有办法在一次拿石子后剩下4个,下一个人必输)
  • 8必输(不论拿多少个剩下的必定是5、6、7,下一个人必胜)

相信聪明的你一定已经发现规律了。轮到自己时, 4 4 4的倍数必输,否则必胜。

由于自己是先手,就看初始数量是否为 4 4 4的倍数,若是则必输,否则就一次操作将剩下的石子数量变成 4 4 4的倍数。

  • 时间复杂度 O ( 1 ) O(1) O(1)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
   
public:
    bool canWinNim(int n) {
   
        return n % 4;
    }
};
Python
class Solution:
    def canWinNim(self, n: int) -> bool:
        return n % 4 != 0  # 注意这里不能像C一样只return一个n%4

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/136024724

相关推荐

  1. LeetCode 0292.Nim 游戏脑筋急转弯

    2024-02-04 18:42:03       58 阅读
  2. LeetCode 0521.最长特殊序列 Ⅰ:脑筋急转弯

    2024-02-04 18:42:03       38 阅读
  3. LeetCode 0299.猜数字游戏:计数

    2024-02-04 18:42:03       48 阅读
  4. leetcode-Nim 游戏

    2024-02-04 18:42:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-04 18:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-04 18:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-04 18:42:03       82 阅读
  4. Python语言-面向对象

    2024-02-04 18:42:03       91 阅读

热门阅读

  1. 倒计时65天

    2024-02-04 18:42:03       46 阅读
  2. [ubuntu]add-apt-repository 添加以及移除

    2024-02-04 18:42:03       51 阅读
  3. ubuntu22.04 VMware17.5

    2024-02-04 18:42:03       47 阅读
  4. Linux定时器

    2024-02-04 18:42:03       58 阅读
  5. Web中的Eval和Bind

    2024-02-04 18:42:03       46 阅读
  6. 【无标题】

    2024-02-04 18:42:03       48 阅读
  7. 苏门X学士常识学习

    2024-02-04 18:42:03       52 阅读
  8. Vue Markdown编辑器toast-ui/editor

    2024-02-04 18:42:03       49 阅读
  9. Libvirt 迁移标志详解

    2024-02-04 18:42:03       46 阅读
  10. 什么是epoll机制

    2024-02-04 18:42:03       59 阅读
  11. scoped样式隔离原理

    2024-02-04 18:42:03       44 阅读
  12. eCos GPIO读写及其中断处理

    2024-02-04 18:42:03       52 阅读