【leetcode】1025. 除数博弈(divisor-game)(博弈)[简单]

2023-05-16

链接

https://leetcode-cn.com/problems/divisor-game/

耗时

解题:12 min
题解:9 min

题意

爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。

最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:

  • 选出任一 x,满足 0 < x < N 且 N % x == 0 。
  • 用 N - x 替换黑板上的数字 N 。

如果玩家无法执行这些操作,就会输掉游戏。

只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。

思路

如果当前玩家得到的数字 N 是奇数,那么他只能将 N 变成一个更小的偶数,因为奇数的因数一定是奇数,两奇数相减一定是偶数。而如果当前玩家得到的数字 N 是偶数,那么他必然可以通过因数 1 使得 N 变为一个奇数。综上,一定可以使得最开始拿到奇数的玩家一直拿到奇数,直到最后让他面对 N==1,无法执行操作输掉游戏。所以爱丽丝先手拿到偶数必胜,拿到奇数必败。

时间复杂度: O ( 1 ) O(1) O(1)

AC代码

class Solution {
public:
    bool divisorGame(int N) {
        return !(N&1);
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【leetcode】1025. 除数博弈(divisor-game)(博弈)[简单] 的相关文章

  • 《LeetCode力扣练习》代码随想录——哈希表(三数之和---Java)

    LeetCode力扣练习 代码随想录 哈希表 三数之和 Java 刷题思路来源于 代码随想录 15 三数之和 排序双指针 class Solution public List
  • leetcode每日一题

    https leetcode cn problems subtree of another tree 这道题需要使用我们之前做过的一道题 那道题我们是来判断两颗树是不是相同的树 这里我们就需要用上这个接口函数 然后思路就是遍历左树和右树来看
  • LeetCode-数组-重叠、合并、覆盖问题-中等难度

    435 无重叠区间 我认为区间类的题型 大多数考验的是思维能力 以及编码能力 该类题型本身并无什么算法可言 主要是思维逻辑 比如本题实际上你只需要能够总结出重叠与不重叠的含义 再加上一点编码技巧 便可完成 解题思路 正如前面所说 那么解题的
  • LeetCode经典150题Golang版.121. 买卖股票的最佳时机

    题目 121 买卖股票的最佳时机 给定一个数组 prices 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算法来计算你所能获
  • 【LeetCode:162. 寻找峰值 | 二分】

    算法题 算法刷题专栏 面试必备算法 面试高频算法 越难的东西 越要努力坚持 因为它具有很高的价值 算法就是这样 作者简介 硕风和炜 CSDN Java领域新星创作者 保研 国家奖学金 高中学习JAVA 大学完善JAVA开发技术栈 面试刷题
  • 扬帆证券:优先股有哪些限制?怎样才能持有优先股?

    优先股有哪些束缚 持有优先股相较于持有一般股 在行使一些公司权力时会受到束缚 如优先股持股股东不能行使选举权及被选举权 虽然对公司事务可以提出建议但无表决权等 另外 由于优先股股息率事前设定 也就是股息固定 那么不论公司市值怎样上涨 股票价
  • ​LeetCode解法汇总746. 使用最小花费爬楼梯

    目录链接 力扣编程题 解法汇总 分享 记录 CSDN博客 GitHub同步刷题项目 https github com September26 java algorithms 原题链接 力扣 LeetCode 官网 全球极客挚爱的技术成长平台
  • 【map】【单调栈 】LeetCode768: 最多能完成排序的块 II

    作者推荐 贪心算法 中位贪心 执行操作使频率分数最大 涉及知识点 单调栈 排序 map 区间合并 题目 给你一个整数数组 arr 将 arr 分割成若干 块 并将这些块分别进行排序 之后再连接起来 使得连接的结果和按升序排序后的原数组相同
  • 【LeetCode刷题笔记】位运算

    231 2 的幂 解题思路 1 除法 不断循环判断 如果能被 2 整除 就不断除以 2 直到不能被 2 整除为止 最后结果如果是 1
  • 面试150-13(Leetcode238除自身以外数组的乘积)

    代码 class Solution public int productExceptSelf int nums int n nums length int res new int n int product 1 int zerocnt 0
  • 《LeetCode力扣练习》代码随想录——双指针法(替换数字---Java)

    LeetCode力扣练习 代码随想录 双指针法 替换数字 Java 刷题思路来源于 代码随想录 54 替换数字 受制于语言限制 普通解法 import java util Scanner class Main public static v
  • 《LeetCode力扣练习》代码随想录——双指针法(反转链表---Java)

    LeetCode力扣练习 代码随想录 双指针法 反转链表 Java 刷题思路来源于 代码随想录 206 反转链表 双指针 Definition for singly linked list public class ListNode int
  • Leetcode 45 跳跃游戏 II

    题意理解 给定一个长度为 n 的 0 索引 整数数组 nums 初始位置为 nums 0 每个元素 nums i 表示从索引 i 向前跳转的最大长度 还是从初始坐标i 0的位置到达最后一个元素 但是问题不是能不能跳到 而是 最少几步能跳到最
  • LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

    目录 162 寻找峰值 题目描述 实现代码与解析 二分 原理思路 1901 寻找峰值 II 题目描述 实现代码与解析 二分 原理思路 162 寻找峰值 题目描述 峰值元素是指其值严格大于左右相邻值的元素 给你一个整数数组 nums 找到峰值
  • Leetcode 45 跳跃游戏 II

    题意理解 给定一个长度为 n 的 0 索引 整数数组 nums 初始位置为 nums 0 每个元素 nums i 表示从索引 i 向前跳转的最大长度 还是从初始坐标i 0的位置到达最后一个元素 但是问题不是能不能跳到 而是 最少几步能跳到最
  • 【每日一题】2397. 被列覆盖的最多行数-2024.1.4

    题目 2397 被列覆盖的最多行数 给你一个下标从 0 开始 大小为 m x n 的二进制矩阵 matrix 另给你一个整数 numSelect 表示你必须从 matrix 中选择的 不同 列的数量 如果一行中所有的 1 都被你选中的列所覆
  • 【Leetcode】49. 字母异位词分组

    49 字母异位词分组 题目链接 代码一 代码二 题目链接 Leetcode 49 字母异位词分组 代码一 func groupAnagrams strs string string 存放字典序相同的字符串切片 hash map string
  • 扬帆证券:成功投资的第一步:首次购买股票需要注意什么?

    关于第一次入市买股票的出资者来说 需求留意以下几点 1 股票的买卖规则 买卖时刻 早盘集合竞价9 15 9 25 尾盘集合竞价14 57 15 00 其中在9 15 9 20之间 出资者能够申报 也能够吊销申报 9 20 9 25之间 出资
  • ​LeetCode解法汇总83. 删除排序链表中的重复元素

    目录链接 力扣编程题 解法汇总 分享 记录 CSDN博客 GitHub同步刷题项目 https github com September26 java algorithms 原题链接 力扣 LeetCode 描述 给定一个已排序的链表的头
  • 『力扣刷题本』:逆波兰表达式求值

    大家好久不昂 最近 1 个多月罗根一直在备考期末 文章发的很少 现在已经放寒假啦 学习自然也不能拉下 毕竟 4 月份就要去参加蓝桥杯了 先给自己定个小目标 日更 2 篇 咳咳 下面马上开始讲题 一 题目 给你一个字符串数组 tokens 表

随机推荐