leetcode - 除数博弈
题目描述
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。
最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:
选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。
只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。
示例
示例 1:
输入:2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。示例 2:
输入:3输出:false解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。
提示:
1 <= N <= 1000
题解
从描述中,我们大致能够得到的信息是,Alice和Bob在做一个数字游戏,Alice选手先开始,Bob选手后开始,如果Alice选手赢了就返回true,如果Bob选手赢了就返回false。那么输赢的条件是什么呢? 天道好轮回,苍天饶过谁,轮到谁满足不了条件0 < x < N
且N % x == 0
谁就是输。这里有点迷惑性的一句叫“选出任一X”。如果你听进去了,就有可能会有选择恐惧症,那这题怕是要做不出来了,看了下测试用例,它仿佛在对我抛媚眼说,每次用最小的那个数去套,那么我们暂且用每次选出最左边那个公因数进行除除看,答案是这样子的。
/**
* @param {number} N
* @return {boolean}
*/
var divisorGame = function(N) {
var flag = false;
var x = 1;
while (N > 1) {
if (N % x === 0) {
flag = !flag;
N = N - x;
} else {
x++;
}
}
return flag;
};
看了下这题题目叫“除数博弈”,题目难度又是简单,我心里一紧,总感觉应该是在考智商。最后看了下官方题解,分奇偶类型进行讨论,如果是Alice刚开始拿到的是奇数她比必输,如果Alice刚开始拿到的是偶数它必胜。看到这个结论有种恍然大悟的感觉,正如评论区lanX所说:“洋洋洒洒十几行,一看题解就一行”。
return N % 2 === 0;
参考文献
1025.除数博弈(leetcode):https://leetcode-cn.com/problems/divisor-game
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一看就懂的Tensorflow实战(DCGAN)
- VBA解压缩ZIP文件08——解压-没有压缩
- 一文教你搞懂C语言的Q格式
- 基础算法之排序算法
- C++核心准则E4,5:设计并构建不变量
- Selenium实际应用注入并执行Javascript语句
- 什么是Python的 “内存管理机制”
- 2020年手工webpack构建react项目,完美支持ssr,包括css和图片资源
- php中赋值、浅拷贝与深拷贝
- 2020最新:100道有答案的前端面试题(下)
- UI自动化测试之ddt实战
- KVM 之网络配置
- Mysql操作
- CentOS7+nginx+uwsgi+Django部署之路
- 【翻译】200行代码讲透RUST FUTURES (4)