Every day a Leetcode
题目来源:3222. 求出硬币游戏的赢家
解法1:数学
要用价值为 75 和 10 的硬币凑出价值总和为 115 的硬币,唯一的可能是 1 个 75 + 4 个 10。
如果一开始 Alice 就没法选,或者偶数轮后 Alice 没法选,那么 Bob 胜出,否则 Alice 胜出。
设 k=min(x, ⌊y/4⌋),这是能玩的回合数,判断 k 的奇偶性即可。
代码:
/*
* @lc app=leetcode.cn id=3222 lang=cpp
*
* [3222] 求出硬币游戏的赢家
*/
// @lc code=start
class Solution
{
public:
string losingPlayer(int x, int y)
{
return min(x, y / 4) % 2 ? "Alice" : "Bob";
}
};
// @lc code=end
结果:
复杂度分析:
时间复杂度:O(1)。
空间复杂度:O(1)。