LeetCode之1450. 在既定時間做作業的學生人數

概要

題目來源鏈接: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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章