কম্পিউটার

C++ এ ওভারল্যাপগুলি সরাতে ন্যূনতম সংখ্যক ব্যবধান খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সেট অন্তরাল আছে; আমাদের ন্যূনতম সংখ্যক ব্যবধান খুঁজে বের করতে হবে যা বাকি ব্যবধানগুলিকে অ-ওভারল্যাপিং করতে সরানো উচিত। সুতরাং যদি ব্যবধান [[8,10],[3,5],[6,9]] হয়, তাহলে আউটপুট হবে 1, যেমন আমাদেরকে [6,9] অপসারণ করতে হবে যাতে অন্য সবগুলো অ-ওভারল্যাপিং হয়। .

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

  • n :=অ্যারের আকার
  • যদি n 0 হয়, তাহলে 0 ফেরত দিন
  • গণনা :=1
  • ব্যবধানের শেষ সময়ের উপর ভিত্তি করে অ্যারে সাজান
  • শেষ :=প্রথম বিরতির শেষ তারিখ
  • আমি 1 থেকে n – 1
      পরিসরে
    • যদি arr[i]>=শেষের সময় শুরু হয়, তাহলে
      • শেষ :=শেষ সময় [i]
      • গণনা 1 দ্বারা বৃদ্ধি করুন
  • রিটার্ন n – গণনা

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   static bool cmp(vector <int>& a, vector <int>& b){
      return a[1] < b[1];
   }
   int eraseOverlapIntervals(vector<vector<int>>& arr) {
      int n = arr.size();
      if(!n)return 0;
         int cnt = 1;
         sort(arr.begin(), arr.end(), cmp);
         int end = arr[0][1];
         for(int i = 1; i < n; i++){
            if(arr[i][0] >= end){
               end = arr[i][1];
               cnt++;
         }
      }
      return n - cnt;
   }
};
main(){
   vector<vector<int>>
   v = {{8,10},{3,5},{6,9}};
   Solution ob;
   cout << (ob.eraseOverlapIntervals(v));
}

ইনপুট

{{8,10},{3,5},{6,9}}

আউটপুট

1

  1. C++ এ অন্তহীন পয়েন্টের সংখ্যা খুঁজুন

  2. C++ এ nম হারমাইট সংখ্যা খুঁজুন

  3. C++ এ একটি সংখ্যা d যোগ করার পর ন্যূনতম সম্ভাব্য অঙ্কের যোগফল খুঁজুন

  4. C++ এ প্রতিপক্ষকে ধরার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক ধাপ খুঁজে বের করার প্রোগ্রাম