मान लीजिए कि हमारे पास अंतरालों की एक द्वि-आयामी सूची है जहां प्रत्येक अंतराल के दो मान हैं [प्रारंभ, अंत]। हमें यह पता लगाना है कि क्या कोई अंतराल है जिसमें एक और अंतराल है।
इसलिए, यदि इनपुट [[2,4], [5,11], [5,9], [10,10]] जैसा है, तो आउटपुट सही होगा क्योंकि [5,11] में [5, 9].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सरणी को क्रमबद्ध करें v
-
एक 2डी सरणी रेट परिभाषित करें
-
प्रत्येक अंतराल के लिए इसे v −
. में-
अगर रिट खाली है, तो -
-
इसे रिट के अंत में डालें
-
-
अन्यथा जब रिट का अंतिम तत्व>=it[0], तब -
-
सही लौटें
-
-
अन्यथा
-
इसे रिट के अंत में डालें
-
-
-
झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#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