ចំនួននិស្សិតធ្វើកិច្ចការផ្ទះតាមពេលវេលានៃដំណោះស្រាយលីឡេលេខកូដ


កម្រិតលំបាក មានភាពងាយស្រួល
អារេ

បញ្ហាចំនួនសិស្សធ្វើកិច្ចការផ្ទះតាមពេលវេលាដែលបានផ្តល់ឱ្យលេជលេខកូដសូលូសិនស្នើឱ្យយើងរកចំនួនសិស្សដែលកំពុងធ្វើកិច្ចការផ្ទះតាមពេលវេលាដែលបានកំណត់។ បញ្ហាគឺច្បាស់ណាស់ចំណងជើងខ្លួនឯងអាចពន្យល់ពីបញ្ហាទាំងអស់រួចទៅហើយ។ យើងត្រូវបានផ្តល់ពេលវេលាសួរនិងពេលវេលាដែលសិស្សធ្វើការលើកិច្ចការផ្ទះរបស់ពួកគេ។ ដូច្នេះដោយប្រើព័ត៌មាននេះយើងត្រូវបានស្នើសុំឱ្យរកចំនួនសិស្សដែលកំពុងធ្វើកិច្ចការផ្ទះរបស់ពួកគេក្នុងកំឡុងពេលសួរ។ ដូច្នេះដូចធម្មតាមុនពេលលោតដោយផ្ទាល់ទៅក្នុងដំណោះស្រាយ។ សូមឱ្យយើងពិនិត្យមើលឧទាហរណ៍មួយចំនួន។

ចំនួននិស្សិតធ្វើកិច្ចការផ្ទះតាមពេលវេលានៃដំណោះស្រាយលីឡេលេខកូដ

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

ការពន្យល់ៈយើងមាននិស្សិត ៣ នាក់ក្នុងនោះមានតែនិស្សិត ១ នាក់ប៉ុណ្ណោះដែលធ្វើកិច្ចការផ្ទះរបស់ខ្លួនក្នុងកំឡុងពេលសួរ។ ព្រោះមានតែកូនតែមួយទេដែលចាប់ផ្តើមធ្វើលំហាត់នៅផ្ទះ = ៣ ហើយបំពេញវាតាមពេលវេលា = ៧ ។

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

ការពន្យល់ៈយើងមាននិស្សិតតែម្នាក់គត់ដែលចាប់ផ្តើមធ្វើកិច្ចការផ្ទះរបស់ខ្លួននៅពេលម៉ោងសួរ។ ដូច្នេះលទ្ធផលក៏ជាលេខ ១ ដែរ។

វិធីសាស្រ្តសំរាប់ចំនួននិស្សិតដែលកំពុងបំពេញការងារនៅផ្ទះតាមពេលវេលានៃដំណោះស្រាយលីអូកូដ

បញ្ហាបានស្នើសុំឱ្យយើងរកចំនួននិស្សិតដែលកំពុងធ្វើការងារផ្ទះរបស់ពួកគេក្នុងកំឡុងពេលសួរ។ យើងត្រូវបានផ្តល់ជូននូវពេលវេលាចាប់ផ្តើមនិងបញ្ចប់នៃសកម្មភាពការងាររបស់សិស្សក្នុងទម្រង់ជាវ៉ិចទ័ររឺ អារេ។ ការប្រើប្រាស់ព័ត៌មាននេះយើងព្យាយាមស្វែងរកតម្លៃដែលត្រូវការ។

យើងអាចដោះស្រាយបញ្ហាបានយ៉ាងងាយស្រួលដោយឆ្លងកាត់ព័ត៌មានដែលបានផ្តល់ឱ្យ។ ព័ត៌មានដែលបានផ្តល់ឱ្យគឺជាពេលវេលាចាប់ផ្តើមនិងបញ្ចប់នៃសកម្មភាពការងារផ្ទះ។ ដូច្នេះយើងពិនិត្យមើលថាតើពេលវេលាសំណួរស្ថិតនៅចន្លោះពេលចាប់ផ្តើមនិងពេលបញ្ចប់នៃសកម្មភាពផ្ទះដែរឬទេ។ រក្សាចំនួនសិស្សទាំងនេះផ្តល់ឱ្យយើងនូវចម្លើយលទ្ធផល។

លេខកូដសំរាប់ចំនួននិស្សិតធ្វើកិច្ចការផ្ទះតាមពេលវេលានៃដំណោះស្រាយលីឡេហ្សូកូដ

លេខកូដ 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

កូដចាវ៉ា

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 (N), ចាប់តាំងពីយើងឆ្លងកាត់ធាតុបញ្ចូលទាំងអស់។ ដូច្នេះពេលវេលាស្មុគស្មាញចេញមកជាលីនេអ៊ែរ។

ភាពស្មុគស្មាញនៃលំហ

ឱ (១), ពីព្រោះយើងប្រើតែអថេរតែមួយដើម្បីផ្ទុកចំនួន។