Leetcode刷题100天—1894. 找到需要补充粉笔的学生编号( 数组)—day34
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题100天—1894. 找到需要补充粉笔的学生编号( 数组)—day34相关的知识,希望对你有一定的参考价值。
前言:
作者:神的孩子在歌唱
大家好,我叫运智
1894. 找到需要补充粉笔的学生编号
难度中等39收藏分享切换为英文接收动态反馈
一个班级里有 n
个学生,编号为 0
到 n - 1
。每个学生会依次回答问题,编号为 0
的学生先回答,然后是编号为 1
的学生,以此类推,直到编号为 n - 1
的学生,然后老师会重复这个过程,重新从编号为 0
的学生开始回答问题。
给你一个长度为 n
且下标从 0
开始的整数数组 chalk
和一个整数 k
。一开始粉笔盒里总共有 k
支粉笔。当编号为 i
的学生回答问题时,他会消耗 chalk[i]
支粉笔。如果剩余粉笔数量 严格小于 chalk[i]
,那么学生 i
需要 补充 粉笔。
请你返回需要 补充 粉笔的学生 编号 。
示例 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 的学生没有足够的粉笔,所以他需要补充粉笔。
提示:
chalk.length == n
1 <= n <= 105
1 <= chalk[i] <= 105
1 <= k <= 109
package 数组;
public class _1894_找到需要补充粉笔的学生编号 {
//解题思路:获取数组长度遍历, k减去元素,直到k<chalk[i]
// 第一种代码超时了
public int chalkReplacer(int[] chalk, int k) {
int n=chalk.length;
int i = 0;
if (n==0) {
return 0;
}
while(k>=0) {
i=0;
for(int num:chalk) {
k=k-chalk[i];
if (k<0) {
break;
}
i++;
}
}
return i;
}
//第二种思路,先遍历一遍,获取其数组总值,然后求其与k的余数,他们的余数就是最后剩下需要遍历的值
public int chalkReplacer1(int[] chalk, int k) {
int i = 0;
int sum=k;
// 先遍历第一遍
for(int num:chalk) {
sum=sum-chalk[i];
if (sum<0) {
return i;
}
i++;
}
// 求出他的余数就是他的要找的数
int s=k%(k-sum);
i=0;
for(int num:chalk) {
s=s-chalk[i];
if (s<0) {
return i;
}
i++;
}
return i;
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于Leetcode刷题100天—1894. 找到需要补充粉笔的学生编号( 数组)—day34的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode刷题1894-中等-找到需要补充粉笔的学生编号
LeetCode刷题1894-中等-找到需要补充粉笔的学生编号
Leetcode刷题100天—997. 找到小镇的法官( 百度算法)—day90
Leetcode刷题100天—700. 二叉搜索树中的搜索( 二叉树)—day34