কম্পিউটার টিউটোরিয়াল

C++-এ দেওয়া ইন্টারভাল সেটে যেকোনো দুটি ওভারল্যাপ করে কিনা চেক করা


মান লইয়া, আমাদের একসেটে ইন্টারভাল দেওয়া আছে যাতে ভ্যালু (time1, time2) থাকে যেখানে time1 কোনো ইভেন্টের শুরুয় সময় এবং time2 সমাপ্তির সময় নির্দেশ করে। আমাদের কাজ হচ্ছে চেক করা এই ইন্টারভালগুলোর মধ্যে যেকোনো একটি অন্য যেকোনো ইন্টারভালের সাথে ওভারল্যাপ করে কিনা। যদি কোনো ওভারল্যাপ থাকে, তবে রেজাল্ট True রিটার্ন করুন, অন্যথায় False।

তাহলে, যদি ইনপুট হয় [(4,7), (5,11), (7,11), (5,8)] তবে আউটপুট হবে True।

এটি সমাধান করার জন্য নিচের ধাপগুলো অনুসরণ করব:

  • inputArr লিস্টটি সোর্ট করুন
  • i = 1 থেকে inputArr এর সাইজ পর্যন্ত লুপ চালান, 거기서
    • যদি inputArr[i - 1].time2 > inputArr[i].time1 হয়, তবে
      • True রিটার্ন করুন
    • False রিটার্ন করুন

উদাহরণ কোড

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

class IntervalClass { 
public: 
    int time1, time2; 
}; 

bool compare(IntervalClass inst1, IntervalClass inst2) {
    return (inst1.time1 < inst2.time1) ? true : false; 
} 

bool solve(vector<IntervalClass> &inputArr) {
    int size = inputArr.size(); 
    sort(inputArr.begin(), inputArr.end(), compare); 
    
    for (int i = 1; i < size; i++) {
        if (inputArr[i - 1].time2 > inputArr[i].time1) {
            return true; 
        } 
    } 
    
    return false; 
} 

int main() { 
    vector<IntervalClass> inputArr = {{4,7},{5,11},{7,11},{5,8}}; 
    int size = sizeof(inputArr) / sizeof(inputArr[0]); 
    cout << solve(inputArr); 
}

ইনপুট

{{4,7},{5,11},{7,11},{5,8}}

আউটপুট

1

  1. C++-এ দুটি নন-ওভারল্যাপিং ইন্টারভালের ন্যূনতম মোট আকার বের করার প্রোগ্রাম

  2. C++-এ দেওয়া স্ট্রিংটি বৈধ সংখ্যা কিনা তা যাচাই করুন

  3. C++-এ দেওয়া বাইনারি ট্রি হিপ (Heap) কিনা তা যাচাই করুন

  4. C++-এ একটি বাইনারি ট্রি SumTree কিনা তা যাচাই করা