Try   HackMD

Leetcode 1450. Number of Students Doing Homework at a Given Time 練習

Difficulty : Medium
Java 演算法Algorithm

撰寫人KVJK_2125Fri, Mar 29, 2024 22:30

題目

說明 Description

Given two integer arrays startTime and endTime and given an integer queryTime.

The ith student started doing their homework at the time startTime[i] and finished it at time endTime[i].

Return the number of students doing their homework at time queryTime. More formally, return the number of students where queryTime lays in the interval [startTime[i], endTime[i]] inclusive.

翻譯:
給兩個整數陣列 startTime (開始時間)和 endTime (結束時間),並給一個整數 queryTime。

第 i 位學生在 startTime[i] 時開始寫作業,在 endTime[i] 時完成作業。

回傳在 queryTime 正在做作業的學生人數。更正式的說,回傳能夠使 queryTime 位於區間 [startTime[i], endTime[i]] 內的學生人數。

範例 Example

Example 1:

Input: startTime = [1,2,3], endTime = [3,2,7], queryTime = 4
Output: 1

Explanation: We have 3 students where:
The first student started doing homework at time 1 and finished at time 3 and wasn't doing anything at time 4.
The second student started doing homework at time 2 and finished at time 2 and also wasn't doing anything at time 4.
The third student started doing homework at time 3 and finished at time 7 and was the only student doing homework at time 4.

Example 2:

Input: startTime = [4], endTime = [4], queryTime = 4
Output: 1

Explanation: The only student was doing their homework at the queryTime.

限制條件 Constraints

  • startTime.length == endTime.length
  • 1 <= startTime.length <= 100
  • 1 <= startTime[i] <= endTime[i] <= 1000
  • 1 <= queryTime <= 1000

解題

思路 Intuition/Approach

  • Step1.
    建立一個整數變數int ans = startTime.length,設定成和開始時間一樣多。

  • Step2.
    判斷從startTimeendTime中,必須經過queryTime
    因此,在startTime > queryTimeendTime < queryTime時,均不經過queryTime,故ans--。維持直到計算結束,回傳ans

程式碼 Code(加註解)

class Solution { public int busyStudent(int[] startTime, int[] endTime, int queryTime) { //建立一個整數變數,設定為多少個startTime就多少 int ans = startTime.length; //以startTime.length作為迴圈條件 for(int i = 0; i < startTime.length; i ++){ //確定是不是沒有經過queryTime if(startTime[i] > queryTime || endTime[i] < queryTime) //沒有經過的話,將ans-- ans--; } //回傳ans return ans; } }