1450.在既定时间做作业的学生人数

This commit is contained in:
游由 2022-08-18 21:51:45 +08:00
parent 474f6eb494
commit 1cb530d5b1
2 changed files with 59 additions and 0 deletions

View File

@ -205,6 +205,7 @@ mod q1413;
mod q1417;
mod q1422;
mod q1447;
mod q1450;
mod q1473;
mod q1480;
mod q1482;

View File

@ -0,0 +1,58 @@
use crate::Solution;
impl Solution {
/// [1450.在既定时间做作业的学生人数](https://leetcode-cn.com/problems/number-of-students-doing-homework-at-a-given-time/)
///
/// 2022-08-18 21:26:00
///
/// 给你两个整数数组 `startTime`(开始时间)和 `endTime`(结束时间),并指定一个整数 `queryTime` 作为查询时间。
///
/// 已知,第 `i` 名学生在 `startTime[i]` 时开始写作业并于 `endTime[i]` 时完成作业。
///
/// 请返回在查询时间 `queryTime` 时正在做作业的学生人数。形式上,返回能够使 `queryTime` 处于区间 `[startTime[i], endTime[i]]`(含)的学生人数。
///
/// + **示例 1**
/// + **输入:** startTime = \[1,2,3\], endTime = \[3,2,7\], queryTime = 4
/// + **输出:** 1
/// + **解释:** 一共有 3 名学生。
/// - 第一名学生在时间 1 开始写作业,并于时间 3 完成作业,在时间 4 没有处于做作业的状态。
/// - 第二名学生在时间 2 开始写作业,并于时间 2 完成作业,在时间 4 没有处于做作业的状态。
/// - 第三名学生在时间 3 开始写作业,预计于时间 7 完成作业,这是是唯一一名在时间 4 时正在做作业的学生。
/// + **示例 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
/// + **提示:**
/// * `startTime.length == endTime.length`
/// * `1 <= startTime.length <= 100`
/// * `1 <= startTime[i] <= endTime[i] <= 1000`
/// * `1 <= queryTime <= 1000`
/// + Related Topics
/// * 数组
pub fn busy_student(start_time: Vec<i32>, end_time: Vec<i32>, query_time: i32) -> i32 {
start_time.into_iter().zip(end_time.into_iter()).into_iter().filter(|(s, e)| *s <= query_time && query_time <= *e).count() as i32
}
}
#[cfg(test)]
mod test {
use crate::Solution;
#[test]
fn test_q1450() {
assert_eq!(Solution::busy_student(vec![1, 2, 3], vec![3, 2, 7], 4), 1);
assert_eq!(Solution::busy_student(vec![4], vec![4], 4), 1);
assert_eq!(Solution::busy_student(vec![4], vec![4], 5), 0);
assert_eq!(Solution::busy_student(vec![4], vec![4], 5), 0);
assert_eq!(Solution::busy_student(vec![9, 8, 7, 6, 5, 4, 3, 2, 1], vec![10, 10, 10, 10, 10, 10, 10, 10, 10], 5), 5);
}
}