ধরুন আমাদের কাছে একটি দ্বি-মাত্রিক ব্যবধানের তালিকা রয়েছে যেখানে প্রতিটি ব্যবধানের দুটি মান রয়েছে [শুরু, শেষ]। আমাদের খুঁজে বের করতে হবে এমন একটি ব্যবধান আছে যা অন্য একটি ব্যবধান রয়েছে।
সুতরাং, যদি ইনপুটটি [[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