এক সেট ইন্টারভাল দেওয়া আছে। লক্ষ্য হল ন্যূনতম কতগুলো ইন্টারভাল মুছে ফেললে বাকিগুলো নন-ওভারল্যাপিং হবে।
লালচী পদ্ধতি: ইন্টারভালগুলো শেষ সময় (end time) অনুযায়ী সর্ট করা হয়। তারপর সবচেয়ে আগে শেষ হওয়া ইন্টারভাল নেওয়া হয় এবং পরবর্তী ইন্টারভালের শুরু সময় বর্তমান শেষ সময়ের চেয়ে বড় বা সমান হলে নেওয়া হয়। মুছে ফেলার সংখ্যা = মোট - নেওয়া ইন্টারভাল।
ইনপুট: [[8,10],[3,5],[6,9]]
আউটপুট: ১
ব্যাখ্যা: [6,9] মুছে ফেললে বাকি [3,5] এবং [8,10] ওভারল্যাপ করে না।
#includeusing namespace std; class Solution { public: static bool cmp(vector & a, vector & b){ return a[1] < b[1]; } int eraseOverlapIntervals(vector >& 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; } }; int main(){ vector > v = {{8,10},{3,5},{6,9}}; Solution ob; cout << ob.eraseOverlapIntervals(v); return 0; }
উপরোক্ত কোড রান করলে আউটপুট:
1