leetcode 292. Nim 游戏【数学】

原题链接:292. Nim 游戏

题目描述:

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

解题思路:

这个题目纯属挂羊头卖狗肉,表面上看着很像博弈论,但是实际上是一个数学推公式,首先n=1,2,3时我直接拿完,我必胜,n=4,当我拿1,2,3时,对手可以通过拿3,2,1拿完,所以对手必胜,当n=5,6,7时,我可以通过拿1,2,3让对手面对一个剩余4个石子的情况,对手必输,n=8时,我拿1,2,3,对手可以拿3,2,1让我面对石子数为4的情况,我必败。通过上述分析可以发现只要最开始的n是4的倍数,那么最终对手肯定会让我面对石子数为4的情况,我必输。如果n不是4的倍数,那么我肯定能让对手先面对石子数为4倍数的情况,最终对手面对石子数为4的情况,对手必输。

结论:当n%4==0时,我无法获胜,n%4!=0时,我可以获胜。

时间复杂度:O(1)

空间复杂度:O(1)

cpp代码如下:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE4 中 TMap<>与TArray<>的全遍历,及带条件删除

一、UE4 中&#xff0c;TMap<int32,int32> 正向遍历&#xff0c;带条件删除。 注意点&#xff1a;在调用 Remove(it->Key);之后&#xff0c;it 并不会自​​​​​​​动往后移动&#xff0c;仍然需要调用 it&#xff0c;才会指向下一个值。 // TMap<> 正向遍历…

flink写入es的参数解析

ElasticsearchSink内部使用BulkProcessor一次将一批动作(ActionRequest)发送到ES集群。在发送批量动作前&#xff0c;BulkProcessor先缓存&#xff0c;再刷新。缓存刷新的间隔&#xff0c;支持基于Action数量、基于Action大小、基于时间间隔3种策略。BulkProcessor支持在同一次…

悬而未决:daterangepicker设置默认选择日期时间后点确认无值的BUG

daterangepicker有两个BUG&#xff1a; 1、startDate和endDate对设置默认日期没有问题&#xff0c;但对设置默认时间的支持有BUG&#xff01;比如设为 moment().add( 1, day ).hours(8).minutes(20).seconds(0), //如果现在是9点&#xff0c;则设置的时间8&#xff1a;20因为比…

C:\Users\ShuYixiao>mysql ‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

这个错误信息表明 mysql 命令在你的系统中没有被识别。这通常意味着 MySQL 没有安装在你的电脑上&#xff0c;或者它的可执行文件路径没有添加到系统的环境变量中。以下是一些解决这个问题的步骤&#xff1a; 确认 MySQL 是否已安装&#xff1a; 如果你还没有安装 MySQL&#x…

​LeetCode解法汇总292. Nim 游戏

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 你和你的朋…

PostGIS学习教程二十一:最近领域搜索

PostGIS学习教程二十一&#xff1a;最近领域搜索 注意&#xff1a;本节涉及的功能只在PostGIS2.0及更高的版本可用。 文章目录 PostGIS学习教程二十一&#xff1a;最近领域搜索一、什么是最近邻域搜索&#xff1f;二、基于索引的KNN 一、什么是最近邻域搜索&#xff1f; 一个常…

游戏如何选择服务器

游戏如何选择服务器 1、CPU处理器&#xff1a;作为游戏服务器的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。我们可以将它简单的理解为公司的核心部门&#xff0c;一个核心部门的处理效率&#xff0c;就是核心数和线程数&#xff0c;比如16核心32线程&…

在java中获取excel的cell值的时候报错

在获取cell的时候&#xff0c;通常会有报错类型不匹配的问题&#xff0c;这是因为你的cell中存储的数据类型和使用的方法不匹配的原因&#xff0c;假如说cell中存储了一个数字&#xff0c;但是使用的cell.getStringCellValue()获取值&#xff0c;就会有如下错误 java.lang.Ill…

微信小程序checkbox多选

效果图 <view class"block"><view class"header"><view class"header-left"><text class"pu-title">数据</text><text class"pu-tip">至少选择一个指标</text></view>&l…

go-redis hash slot 之旅

搭建redis 集群 创建一个网桥 docker network create -d bridge --subnet192.168.148.0/24 --gateway192.168.148.1 -o parenteno1 redis-net通过docker 文件创建redis 集群&#xff0c; 这里注意要不要使用redis 7以上的版本&#xff0c;不然会出问题 version: "3&quo…

Tomcat组件架构与数据流

一、背景与简介 Tomcat我们都知道是一个开源的、实现了大部分Java EE、Servlet、JSP规范的Servlet容器, 允许我们将实现了Serlvet接口的Web程序war包进行部署运行。 但是你有对Tomcat做过细致的学习么? 我相信大部分同学和我一样&#xff0c;之前也是只会进行简单使用&#x…

django线上教育学习平台大数据分析系统python

随着互联网技术不断地发展&#xff0c;网络与大数据成为了人们生活的一部分&#xff0c;而线上教育平台大数据分析作为网上应用的一个全新的体现&#xff0c;由于其特有的便捷性&#xff0c;已经被人们所接受。目前主流的线上教育平台大数据分析服务不仅不明确并且管理盈利较低…

解析Go内存逃逸

Go语言以其内建的垃圾回收机制和内存安全性而著称。然而&#xff0c;在编写Go代码时&#xff0c;我们仍然需要关注内存的分配和释放&#xff0c;以确保程序的性能和稳定性。接下来将深入讨论Go中的内存逃逸现象&#xff0c;探讨其原因、优化策略&#xff0c;以及在实际开发中的…

NLP任务之Named Entity Recognition

深度学习的实现方法&#xff1a; 双向长短期记忆网络&#xff08;BiLSTM&#xff09;: BiLSTM是一种循环神经网络&#xff08;RNN&#xff09;的变体&#xff0c;能够捕捉序列数据中的长期依赖关系。在NER任务中&#xff0c;BiLSTM能有效地处理文本序列&#xff0c;捕捉前后文本…

专业课130+总分420+南京大学851信号与系统考研经验南大电子信息与通信系统

经过一年的复习&#xff0c;顺利上岸&#xff0c;被南京大学录取&#xff0c;今年专业课130&#xff0c;总分420&#xff0c;回忆这一年的复习还是有很多经验分享&#xff0c;希望对大家复习有帮助。 专业课&#xff1a; 南京大学851信号与系统难度这几年无论是范围还是难度都…

【MySQL】学习并使用DQL实现排序查询和分页查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-SP91zTA41FlGU0Ce {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

计算机服务器中了DevicData勒索病毒如何解密,DevicData勒索病毒解密流程

网络数据安全一直是企业关心的主要话题&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了DevicData勒索病毒攻击&#xff0c;导致企业计算机服务器瘫痪无法正常工作&#xff0c;严重影响了工作业务开展。经过云天数据恢复中…

软件架构风格:您的系统设计指南

软件架构风格&#xff1a;您的系统设计指南 软件架构不仅仅是组织代码的方式&#xff0c;它是对软件整体结构和行为的全面规划。一个好的架构能够让软件更加灵活、可维护&#xff0c;并且能够应对未来的变化。下面是一些流行的软件架构风格&#xff0c;以及它们的C#代码例子&a…

docker-compose常用命令全集

1、启动或构建应用程序&#xff1a; docker-compose up 根据 docker-compose.yml 文件中定义的配置启动应用程序的服务。如果镜像不存在&#xff0c;将会构建镜像 2、后台启动应用程序&#xff1a; docker-compose up -d 在后台模式下启动应用程序的服务&#xff0c;不会在…

【算法刷题】前K个高频单词

给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c; 按字典顺序 排序。 示例 1&#xff1a; 输入: words [“i”, “love”, “leetcode”, “i”, “l…