美文网首页力扣算法刷题
每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,

每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,

作者: 清风Python | 来源:发表于2021-09-10 22:40 被阅读0次

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

https://leetcode-cn.com/problems/find-the-student-that-will-replace-the-chalk/

难度:中等

题目

一个班级里有 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;
    }
}

欢迎关注我的公众号: 清风Python,带你每日学习Python算法刷题的同时,了解更多python小知识。

有喜欢力扣刷题的小伙伴可以加我微信(King_Uranus)互相鼓励,共同进步,一起玩转超级码力!

我的个人博客:https://qingfengpython.cn

力扣解题合集:https://github.com/BreezePython/AlgorithmMarkdown

相关文章

  • 每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,

    1894.找到需要补充粉笔的学生编号[https://leetcode-cn.com/problems/find-...

  • 【冲冲冲】LeetCode1894. 找到需要补充粉笔的学生编号

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

  • 每日一题

    每日一题是在十一假期之后在班级开展的拓展延伸数学知识的一种尝试,可以说是每天给学生补充的数学思维题。每日一题...

  • 新教学日志(10)

    今天发了期中考试试卷,失分最多的依然是作文,最后一题的作文要求是首先补充题目,很多学生只顾写作文,没有补充题目,是...

  • 2021-03-01 知识点:一维前缀和的应用

    > 今日的每日一题:区域和检索-数组不可变 > 知识点总结:前缀和的应用 > 题目描述:题目很简单(虽然描述的有点...

  • 2021-09-11 leetcode刷题

    1.9.10号每日一题,好的优化时间养成的好习惯,使得没有被暴力卡住 一个班级里有 n 个学生,编号为 0 到 n...

  • Binary search tree

    Binary Search Tree相关题目思路 简单题目使用非递归的中序遍历 背好模版还有一些题目需要模拟搜索t...

  • LC55

    顺便打卡了每日一题,写这道题我也在疑惑,这是中等题?? 题目 题解思路 很简单,正向遍历,每个数计算自己可以到达的...

  • leetcode每日一题 python解法 3月3日

    每日一题开始!有学python的小伙伴一起嘛 看来今天做的蛮早的,竟然击败了这么多人 难度:简单 题目内容: 给定...

  • 我与学生二三事(三)

    遗憾的事情 一,每日一题 学生进入高中学习时起,我就要求每一名学生都准备一个“累积本”,每日累积一题,可以是易错题...

网友评论

    本文标题:每日一题:1894.找到需要补充粉笔的学生编号 简单的模拟题目,

    本文链接:https://www.haomeiwen.com/subject/xytowltx.html