特定の時間に宿題をしている学生の数Leetcodeソリューション


難易度 簡単に
配列

問題ある時間に宿題をしている生徒の数LeetcodeSolutionは、特定の時間に宿題をしている生徒の数を見つけるように求めています。 問題は非常に明確であり、タイトル自体はすでに問題全体を説明することができます。 質問の時間と生徒が宿題をする時間を与えられます。 したがって、この情報を使用して、クエリ時間中に宿題をしている学生の数を見つけるように求められます。 したがって、通常どおり、ソリューションに直接ジャンプする前に。 いくつかの例を確認しましょう。

特定の時間に宿題をしている学生の数Leetcodeソリューション

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

説明:1人の生徒がいますが、クエリ時間中に宿題をしているのは3人の生徒だけです。 時間= 7で宿題を始め、時間= XNUMXで宿題を終える子供はXNUMX人だけだからです。

startTime = [4], endTime = [4], queryTime = 4
1

説明:クエリ時間と同じ時間に宿題を始める生徒が1人います。 したがって、出力もXNUMXです。

与えられた時間に宿題をしている学生の数に対するアプローチLeetcodeソリューション

問題は、クエリ時間中に宿題に取り組んでいる学生の数を見つけるように私たちに求めました。 学生の宿題活動の開始時間と終了時間をベクトルまたは 配列。 この情報を使用して、必要な値を見つけようとします。

与えられた情報をトラバースするだけで、問題を簡単に解決できます。 与えられた情報は宿題活動の開始時間と終了時間です。 そのため、クエリ時間が宿題アクティビティの開始時間と終了時間の間にあるかどうかを確認します。 これらの学生の数を数えることは私達に結果の答えを与えます。

特定の時間に宿題をしている学生の数のコードLeetcodeソリューション

C ++コード

#include <bits/stdc++.h>
using namespace std;

int busyStudent(vector<int> startTime, vector<int> endTime, int queryTime) {
    int n = startTime.size();
    int ans = 0;
    for(int i=0;i<n;i++)
        ans += ((startTime[i] <= queryTime && queryTime <= endTime[i]) ? 1 : 0);
    return ans;
}

int main(){
    vector<int> startTime = {4};
    vector<int> endTime = {4};
    int queryTime = 4;
    cout<<(busyStudent(startTime, endTime, queryTime));
}
1

Javaコード

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static int busyStudent(int[] startTime, int[] endTime, int queryTime) {
        int n = startTime.length;
        int ans = 0;
        for(int i=0;i<n;i++)
            ans += ((startTime[i] <= queryTime && queryTime <= endTime[i]) ? 1 : 0);
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    int[] startTime = {4};
    int[] endTime = {4};
    int queryTime = 4;
    System.out.println(busyStudent(startTime, endTime, queryTime));
  }
}
1

複雑さの分析

時間の複雑さ

オン)、 すべての入力要素をトラバースするためです。 したがって、時間計算量は線形になります。

スペースの複雑さ

O(1)、 カウントを格納するために単一の変数のみを使用するためです。