概要
題目來源鏈接:https://leetcode-cn.com/problems/number-of-students-doing-homework-at-a-given-time/
難度:簡單
類型:數組
題目
給你兩個整數數組 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
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/number-of-students-doing-homework-at-a-given-time
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
分析
總結幾次示例的情況,有如下結論:
// 示例1:startTime<queryTime&&endTime>queryTime // 示例2:startTime=queryTime&&endTime=queryTime // 示例3:五 // 示例4:無 // 示例5:startTime<=queryTime&&endTime>queryTime
故startTime<=queryTime&&endTime>queryTime即可滿足條件。
代碼
Java代碼
public class Demo {
// 示例1:startTime<queryTime&&endTime>queryTime
// 示例2:startTime=queryTime&&endTime=queryTime
// 示例3:五
// 示例4:無
// 示例5:startTime<=queryTime&&endTime>queryTime
/**
* 得到在既定時間做作業的學生人數
*
* @param startTime 開始時間
* @param endTime 結束時間
* @param queryTime 查詢時間
* @return 返回查詢時間時正在做作業的人數
*/
public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
int count = 0;// 保存查詢時間時正在做作業的人數
if (startTime.length == endTime.length) {
for (int i = 0; i < endTime.length; i++) {
if (startTime[i] <= queryTime && endTime[i] >= queryTime) {
count++;
}
}
}
return count;
}
public static void main(String[] args) {
/* 測試 */
int startTime[] = new int[]{9, 8, 7, 6, 5, 4, 3, 2, 1};
int endTime[] = new int[]{10, 10, 10, 10, 10, 10, 10, 10, 10};
int queryTime = 5;
int i = new Demo().busyStudent(startTime, endTime, queryTime);
System.out.println(i);
}
}
C語言代碼
int busyStudent(int* startTime, int startTimeSize, int* endTime, int endTimeSize, int queryTime){
int count=0;// 保存查詢時間時正在做作業的人數
if(startTimeSize==endTimeSize) {
for (int i = 0; i < endTimeSize; i++) {
if(startTime[i]<=queryTime&&endTime[i]>=queryTime) {
count++;
}
}
}
return count;
}