কম্পিউটার

C++ এ একটি নির্দিষ্ট সেটের মধ্যে যে কোনো দুটি ব্যবধান ওভারল্যাপ হচ্ছে কিনা তা পরীক্ষা করুন


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

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

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • তালিকা ইনপুটএআরআর সাজান
  • আমি রেঞ্জ 1 থেকে inputArr এর আকারের জন্য, করুন
    • যদি inputArr [i - 1].time2> inputArr[i].time1 হয় তাহলে
      • সত্য ফেরান
    • মিথ্যে ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#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++ এ হিপ আছে কিনা তা পরীক্ষা করুন

  4. একটি প্রদত্ত বাইনারি ট্রি C++ এ SumTree কিনা তা পরীক্ষা করুন