每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,注意求余的技巧!

简介: 每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,注意求余的技巧!

1894.找到需要补充粉笔的学生编号



难度:中等


题目

一个班级里有 n 个学生,编号为 0 到 n - 1 。每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,

以此类推,直到编号为 n - 1 的学生,然后老师会重复这个过程,重新从编号为 0 的学生开始回答问题。

给你一个长度为 n 且下标从 0 开始的整数数组 chalk 和一个整数 k 。一开始粉笔盒里总共有 k 支粉笔。

当编号为 i 的学生回答问题时,他会消耗 chalk[i] 支粉笔。如果剩余粉笔数量 严格小于 chalk[i] ,那么学生 i 需要 补充 粉笔。

请你返回需要 补充 粉笔的学生 编号 。

提示:

  • chalk.length == n
  • 1 <= n <= 10 ^ 5
  • 1 <= chalk[i] <= 10 ^ 5
  • 1 <= k <= 10 ^ 9


示例


示例 1:
输入:chalk = [5,1,5], k = 22
输出:0
解释:学生消耗粉笔情况如下:
- 编号为 0 的学生使用 5 支粉笔,然后 k = 17 。
- 编号为 1 的学生使用 1 支粉笔,然后 k = 16 。
- 编号为 2 的学生使用 5 支粉笔,然后 k = 11 。
- 编号为 0 的学生使用 5 支粉笔,然后 k = 6 。
- 编号为 1 的学生使用 1 支粉笔,然后 k = 5 。
- 编号为 2 的学生使用 5 支粉笔,然后 k = 0 。
编号为 0 的学生没有足够的粉笔,所以他需要补充粉笔。
示例 2:
输入:chalk = [3,4,1,2], k = 25
输出:1
解释:学生消耗粉笔情况如下:
- 编号为 0 的学生使用 3 支粉笔,然后 k = 22 。
- 编号为 1 的学生使用 4 支粉笔,然后 k = 18 。
- 编号为 2 的学生使用 1 支粉笔,然后 k = 17 。
- 编号为 3 的学生使用 2 支粉笔,然后 k = 15 。
- 编号为 0 的学生使用 3 支粉笔,然后 k = 12 。
- 编号为 1 的学生使用 4 支粉笔,然后 k = 8 。
- 编号为 2 的学生使用 1 支粉笔,然后 k = 7 。
- 编号为 3 的学生使用 2 支粉笔,然后 k = 5 。
- 编号为 0 的学生使用 3 支粉笔,然后 k = 2 。
编号为 1 的学生没有足够的粉笔,所以他需要补充粉笔。


分析

今天的每日一题,有些对不起中等难度了,只是一道简单的模拟题目而已...

这里只需要注意下K的取值范围是10 ^ 9所以,需要将K先对sum的chalk取余。

为什么?如果k = 10 ^ 9,而chalk == 1,这样循环起来时间就爆了...

来看看解题吧:


解题


Python:


class Solution:
    def chalkReplacer(self, chalk, k):
        k %= sum(chalk)
        if k == 0: return 0
        for i, num in enumerate(chalk):
            k -= num
            if k < 0: return i


Java:


class Solution {
    public int chalkReplacer(int[] chalk, int k) {
        long sum = 0;
        int ret = 0;
        for (int i : chalk) sum += i;
        k %= sum;
        for (int i = 0; i < chalk.length; i++) {
            k -= chalk[i];
            if (k < 0) return i;
        }
        return 0;
    }
}




相关文章
|
XML JSON Java
Jackson反序列化不可变类
Jackson 默认的反序列化策略需要无参构造器和字段 setter 函数。对于不可变类(如 `ImmutableUser`),可以通过以下三种方式解决: 1. **使用 Jackson 注解**:在全参构造器上使用 `@JsonCreator` 和 `@JsonProperty` 注解。 2. **使用 jackson-module-parameter-names**:引入依赖并注册 `ParameterNamesModule` 模块。 3. **使用 Mixins 机制**:创建一个 Mixin 类,使用 `@JsonCreator` 和 `@JsonProperty` 注解
162 3
Jackson反序列化不可变类
|
12月前
|
存储 安全
Cookie会话跟踪的原理
会话跟踪技术包括Cookie和Session。Cookie是客户端技术,首次访问时服务器通过Set-Cookie响应头发送Cookie,浏览器保存并在后续请求中通过Cookie请求头回传,实现会话跟踪。但Cookie易被用户修改或禁用,安全性较低。Session则是服务器端技术,每次会话生成唯一的Session ID,通过Cookie传递给客户端,客户端在后续请求中携带此ID,服务器据此识别会话。Session更安全,但在集群环境中需解决会话共享问题。
322 1
|
12月前
|
Linux iOS开发 MacOS
Matplotlib 中文显示
Matplotlib 中文显示
499 5
|
机器学习/深度学习 XML 人工智能
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
|
安全 API 开发工具
全面对比API和SDK
全面对比API和SDK
2585 0
|
机器学习/深度学习 数据采集 编解码
【MATLAB】史上最全的 18 种信号分解算法全家桶
【MATLAB】5 种高创新性的信号分解算法: https://mbd.pub/o/bread/ZJ6bkplp 【MATLAB】13 种通用的信号分解算法: https://mbd.pub/o/bread/mbd-ZJWZmptt 【MATLAB】史上最全的 18 种信号分解算法全家桶: https://mbd.pub/o/bread/ZJ6bkplq 其他类算法 【MATLAB】史上最全的11种数字信号滤波去噪算法全家桶: https://mbd.pub/o/bread/ZJiYlphx 【MATLAB】史上最全的9种频谱分析算法全家桶: https://mbd.pub/o/bread/Z
929 1
|
搜索推荐 SEO
seo:百度统计
seo:百度统计
844 0
seo:百度统计
|
数据安全/隐私保护
今天我们就浅聊一下共享WiFi连一次有多少的收入以及每天大概会有多少的一个收益情况
具体多少钱需要看后台怎么设定,假设后台设定是0.3毛,然后就是把这0.3毛分给团长和拓展员还有商家,具体比例每个人不同。你们也不要看单价少有句话说的好苍蝇再小也是肉,滴水穿石,很多大钱都是小钱积累来的,如果不能靠质量取胜,那就靠数量、靠勤奋、靠比别人更努力。至于单价问题仅仅只是为了市场平衡而设定的一个标准而已,按照标准执行,大家都有钱赚。
今天我们就浅聊一下共享WiFi连一次有多少的收入以及每天大概会有多少的一个收益情况
|
Web App开发 黑灰产治理 CDN
压箱底!8个珍藏多年的Chrome插件高速下载网站
Chrome插件以轻量化、使用方便倍受欢迎,我之前也曾经很多篇文章介绍过不少好用的Chrome插件。其中,不乏一些名气很大、功能很强的插件。
压箱底!8个珍藏多年的Chrome插件高速下载网站
|
存储 监控 算法
博途软件的安装与操作、PID控制器
一、博途V16专业版对计算机的软硬件有哪些要求? 二、安装博途时,遇到不停地提示重启,应该如何操作? 三、PID控制系统由哪几部分组成?各有什么作用? 四、S7-1200PID控制器由哪几部分组成?简述各部分之间的关系。
1536 0
博途软件的安装与操作、PID控制器

热门文章

最新文章