这是小川的第382次更新,第411篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第244题(顺位题号是1025)。Alice和Bob轮流玩游戏,Alice首先出发。

最初,黑板上有一个数字N. 在每个玩家的回合中,该玩家进行以下操作:

选择0 < x <NN%x == 0的任何x

N - x替换黑板上的数字N.

此外,如果玩家无法移动,他们将输掉游戏。

当且仅当Alice赢得比赛时才返回True,假设两个玩家都达到最佳状态。

例如:

输入:2

输出:true

说明:Alice选择1,Bob没有更多动作。

输入:3

输出:false

说明:Alice选择1,Bob选择1,Alice不再移动。

注意

  • 1 <= N <= 1000

02 解题

N=1,0 < x < 1且1%x == 0,没有符合的数,Alice输。

N=2,0 < x < 2且2%x == 0,Alice取1,N变成1,轮到Bob,Bob无法选择合适的数,Alice赢。

N=3,0 < x < 3且3%x == 0,Alice取1,N变成2,轮到Bob,Bob选1,N变成1,轮到Alice再选,没有符合的数,Alice输。

N=4,0 < x < 4且4%x == 0,Alice取1,N变成3,轮到Bob,Bob选1,N变成2,轮到Alice再选1,N变成1,再轮到Bob选,没有符合的数,Alice赢。

N=5,0 < x < 5且5%x == 0,Alice取1,N变成4,轮到Bob,Bob选1,N变成3,再轮到Alice选,和前面N等于3结果一样,Alice输。

N=6,0 < x < 6且6%x == 0,Alice取1,N变成5,轮到Bob,Bob选1,N变成4,再轮到Alice选,和前面N等于4结果一样,Alice赢。

从上面依次计算的例子来看,当N为奇数的时候,谁先开始,谁就输,因为对方肯定会让你继续变成奇数,直到N变成1。

当N为偶数的时候,谁先开始,谁就赢,第一步取1,将N变成奇数,对方只能继续取1或者其他奇数,奇数减去奇数变为偶数,开始的那一方再取1,直到N变成1。

public boolean divisorGame(int N) {
return N%2 == 0;
}

03 小结

算法专题目前已连续日更超过七个月,算法题文章250+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

LeetCode.1025-除数游戏(Divisor Game)的更多相关文章

  1. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

  2. BZOJ 1025 [SCOI2009]游戏

    1025: [SCOI2009]游戏 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1533  Solved: 964[Submit][Status][ ...

  3. BZOJ 1025: [SCOI2009]游戏( 背包dp )

    显然题目要求长度为n的置换中各个循环长度的lcm有多少种情况. 判断一个数m是否是满足题意的lcm. m = ∏ piai, 当∑piai ≤ n时是满足题意的. 最简单我们令循环长度分别为piai, ...

  4. leetcode 174. 地下城游戏 解题报告

    leetcode 174. 地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下 ...

  5. LeetCode:跳跃游戏【55】

    LeetCode:跳跃游戏[55] 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置.数组中的每个元素代表你在该位置可以跳跃的最大长度.判断你是否能够到达最后一个位置. 示例 1: 输入: ...

  6. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  7. LeetCode 1025. Divisor Game

    题目链接:https://leetcode.com/problems/divisor-game/ 题意:Alice和Bob玩一个游戏,Alice先开始.最初,黑板上有一个数字N.每一轮,选手首先需要选 ...

  8. [LeetCode] Minesweeper 扫雷游戏

    Let's play the minesweeper game (Wikipedia, online game)! You are given a 2D char matrix representin ...

  9. [Swift]LeetCode1025. 除数博弈 | Divisor Game

    Alice and Bob take turns playing a game, with Alice starting first. Initially, there is a number N o ...

随机推荐

  1. docker 创建容器时指定容器ip

    Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定. 在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的. 我们可以创建自己的bri ...

  2. POJ3311Hie with the Pie(floyd传递+DP,状态压缩)

    问题 The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfo ...

  3. std::setw(size)与std::setfill(char)

    头文件:#include <iostream>#include <iomanip>using namespace std; 功能:  std::setw :需要填充多少个字符, ...

  4. 对React的研究-------------引用

    DOM 的全称是 Document Object Model (文档对象模型) 响应式 UI const ThinkerWithHat = ({ hat }) => (  <div> ...

  5. react -搭建服务-2

    export const DEFAULT_TITLE = "你好"; // export const PRODUCT_SERVER_URL = "http://10.10 ...

  6. win10 1903 更改文字大小

    标题栏 - 菜单 - 消息框 - 调色板标题11- 图标 - 工具提示 - Caption 标题 的 宽/高 - ; 14的宽高 - 菜单 的 宽/高 - ; 的宽高 -; 设置 注册表 HKEY_C ...

  7. 悲观锁,乐观锁以及MVCC

    在上文中,我们探讨了MySQL不同存储引擎中的各类锁,在这篇文章中我们将要讨论的是MySQL是如何实现并发控制的.并发问题有三种,分别为: 读-读,不存在任何问题 读-写,有隔离性问题,可能遇到脏读( ...

  8. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  9. Hedera: Dynamic Flow Scheduling for Data Center Networks

    摘要: 当今的数据中心为成千上万台计算机的群集提供了巨大的聚合带宽, 但是即使在最高端的交换机中,端口密度也受到限制,因此数据中心拓扑通常由多根树组成,这些树在任何给定的主机对之间都具有许多等价路径. ...

  10. python中的事务

    1. 为什么要有事务 事务广泛的运用于订单系统.银行系统等多种场景 例如: A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事: 检查A的账户余额>500元: A 账户中 ...