ধরুন আমাদের কাছে একটি দ্বি-মাত্রিক ব্যবধানের তালিকা রয়েছে যেখানে প্রতিটি ব্যবধানের দুটি মান রয়েছে [শুরু, শেষ]। আমাদের খুঁজে বের করতে হবে এমন একটি ব্যবধান আছে যা অন্য একটি ব্যবধান রয়েছে।
সুতরাং, যদি ইনপুটটি [[2,4],[5,11],[5,9],[10,10]] এর মতো হয়, তাহলে আউটপুটটি সত্য হবে কারণ [5,11] এর মধ্যে [5, 9]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
অ্যারে সাজান v
-
একটি 2D অ্যারে ret সংজ্ঞায়িত করুন
-
প্রতিটি ব্যবধানের জন্য এটি v −
এ-
যদি ret খালি হয়, তাহলে -
-
ret এর শেষে ঢোকান
-
-
অন্যথায় যখন ret>=it[0] এর শেষ উপাদান, তারপর −
-
প্রত্যাবর্তন সত্য
-
-
অন্যথায়
-
ret এর শেষে ঢোকান
-
-
-
ফেরত মিথ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool static cmp(vector<int> &a, vector<int> &b) {
return a[1] == b[1] ? a[0] > b[0] : a[1] < b[1];
}
bool solve(vector<vector<int>> &v) {
sort(v.begin(), v.end(), cmp);
vector<vector<int>> ret;
for (auto &it : v) {
if (ret.empty())
ret.push_back(it);
else if (ret.back()[0] >= it[0])
return true;
else
ret.push_back(it);
}
return false;
}
};
main() {
Solution ob;
vector<vector<int>> v = {{2,4},{5,11},{5,9},{10,10}};
cout << (ob.solve(v));
} ইনপুট
{{2,4},{5,11},{5,9},{10,10}} আউটপুট
1