当前位置: 首页 > article >正文

【LeetCode】每日一题 2024_11_5 求出硬币游戏的赢家(模拟/数学)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:求出硬币游戏的赢家

代码与解题思路

先读题:

题目要求玩家每轮拿出 115 的硬币,但是只有 x 带有 5,y 是 10,这意味着每一轮只能通过拿 1 个 x 和 4 个 y 进行游戏,最简单的方法就是直接依照题意进行模拟,代码如下:

func losingPlayer(x int, y int) string {
    // 因为要拿出总和为 115 的硬币,所以必须要 1 个 x 和 4 个 y
    cnt := 0
    for x > 0 && y > 3 {
        x -= 1
        y -= 4
        cnt++
    }
    if cnt&1 == 0 {
        return "Bob"
    }
    return "Alice"
}

像这样有规律的情况,也可以用数学方法 O(1) 解决这个问题:

当 x 和 y%4 其中一个是偶数的时候(以 x 的数量是 0 为例),Bob 会赢,因为到 Alice 拿,但是数量不足了

当其中一个是奇数的时候(以 x 的数量是 1 为例),Alice 会赢,因为 Alice 拿完之后,Bob 就不能拿够数量了

代码如下:

func losingPlayer(x int, y int) string {
    return [2]string{"Bob", "Alice"}[min(x, y/4)%2]
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


http://www.kler.cn/a/380544.html

相关文章:

  • 【HTML】——VSCode 基本使用入门和常见操作
  • 如果 MySQL 主库出现了问题,从库该何去何从呢?
  • 防重方案-订单防重方案笔记
  • 抓住亚马逊、shein新品扶持期,利用测评提升搜索排名与销量
  • 小家电常用防水触摸IC
  • 海睿思产品体系二次开发能力介绍
  • Node学习记录-events
  • 论文阅读-用于点云分析的自组织网络
  • TDengine数据备份与恢复
  • 【云备份项目】json以及jsoncpp库的使用
  • SpringBoot新闻稿件管理系统:架构与实现
  • 【零售和消费品&存货】快递包裹条形码与二维码识别系统源码&数据集全套:改进yolo11-RFCBAMConv
  • redis7学习笔记
  • nodejs入门教程12:nodejs url模块
  • WindowsDocker安装到D盘,C盘太占用空间了。
  • 确定性信道无损耗信道无用信道对称信道
  • mysql 8.0.39 Caused by: java.sql.SQLException: Illegal mix of collations 异常解决
  • 信而泰防火墙安全测试解决方案:为网络安全保驾护航
  • leetcode-19-删除链表的倒数第N个结点
  • 【青牛科技】GC4928替代BD63006/罗姆在吸尘器行走轮、卷发器、水泵和小风扇中的应用
  • Linux之初体验
  • A016基于SpringBoot的学生网上选课系统的设计与实现
  • 跳表原理笔记
  • 【Mac】安装 VMware Fusion Pro
  • uniapp-是否删除
  • pytorch3d导入maya相机位姿踩坑