每日一题: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;
    }
}




相关文章
|
10月前
|
XML JSON Java
Jackson反序列化不可变类
Jackson 默认的反序列化策略需要无参构造器和字段 setter 函数。对于不可变类(如 `ImmutableUser`),可以通过以下三种方式解决: 1. **使用 Jackson 注解**:在全参构造器上使用 `@JsonCreator` 和 `@JsonProperty` 注解。 2. **使用 jackson-module-parameter-names**:引入依赖并注册 `ParameterNamesModule` 模块。 3. **使用 Mixins 机制**:创建一个 Mixin 类,使用 `@JsonCreator` 和 `@JsonProperty` 注解
122 3
Jackson反序列化不可变类
|
9月前
|
存储 安全
Cookie会话跟踪的原理
会话跟踪技术包括Cookie和Session。Cookie是客户端技术,首次访问时服务器通过Set-Cookie响应头发送Cookie,浏览器保存并在后续请求中通过Cookie请求头回传,实现会话跟踪。但Cookie易被用户修改或禁用,安全性较低。Session则是服务器端技术,每次会话生成唯一的Session ID,通过Cookie传递给客户端,客户端在后续请求中携带此ID,服务器据此识别会话。Session更安全,但在集群环境中需解决会话共享问题。
213 1
|
11月前
|
机器学习/深度学习 运维 监控
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维工作的重要性日益凸显。随着企业业务的不断扩展和技术的日新月异,传统的运维方式已难以满足现代企业的需求。因此,构建一个高效、智能的运维体系成为了企业发展的关键。本文将探讨如何从自动化逐步演进到智能化,以实现运维工作的高效化和智能化。
|
机器学习/深度学习 XML 人工智能
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性
|
安全 API 开发工具
全面对比API和SDK
全面对比API和SDK
1565 0
|
消息中间件 存储 中间件
常用几大MQ比较
rabbitmq、kafka、rocketmq比较
|
编解码 图计算 iOS开发
iPhone手机屏幕尺寸与倍图计算公式(更新至iPhone 14 Plus)
iPhone手机屏幕尺寸与倍图计算公式(更新至iPhone 14 Plus)
693 0
|
数据库 开发者
Seata的 TCC 模式
Seata的 TCC 模式
|
算法 调度 数据安全/隐私保护
什么是CAS锁
什么是CAS锁
241 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
841 1

热门文章

最新文章