【每日一题】LeetCode 1450.正在做作业的学生数量问题(数组、枚举)
题目描述
给定两个整数数组 startTime
和 endTime
,分别代表学生的开始和结束写作业的时间。同时给定一个整数 queryTime
作为查询时间。需要找出在 queryTime
时刻正在写作业的学生人数。如果 queryTime
落在某个学生的开始和结束时间之间(包括边界),则该学生在 queryTime
时刻正在写作业。
思路分析
这个问题可以通过遍历 startTime
和 endTime
数组来解决。对于数组中的每个元素,我们检查 queryTime
是否位于对应的开始和结束时间之间。如果是,我们就增加一个计数器。最后,返回计数器的值,即为在 queryTime
时刻正在做作业的学生人数。
输入示例
- 示例 1:
- 输入:
startTime = [1,2,3]
,endTime = [3,2,7]
,queryTime = 4
- 输出:
1
- 输入:
- 示例 2:
- 输入:
startTime = [4]
,endTime = [4]
,queryTime = 4
- 输出:
1
- 输入:
- 示例 3:
- 输入:
startTime = [4]
,endTime = [4]
,queryTime = 5
- 输出:
0
- 输入:
- 示例 4:
- 输入:
startTime = [1,1,1,1]
,endTime = [1,3,2,4]
,queryTime = 7
- 输出:
0
- 输入:
- 示例 5:
- 输入:
startTime = [9,8,7,6,5,4,3,2,1]
,endTime = [10,10,10,10,10,10,10,10,10]
,queryTime = 5
- 输出:
5
- 输入:
代码实现
class Solution {
public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
// 初始化正在做作业的学生人数为0
int count = 0;
// 获取学生数量
int end = endTime.length;
// 遍历所有学生
for (int i = 0; i < end; i++) {
// 检查查询时间是否在当前学生的作业时间范围内
if (startTime[i] <= queryTime && queryTime <= endTime[i]) {
// 如果是,则增加正在做作业的学生人数
count++;
}
}
// 返回正在做作业的学生人数
return count;
}
}