मान लीजिए कि हमारे पास अंतरालों की एक द्वि-आयामी सूची है जहां प्रत्येक अंतराल के दो मान हैं [प्रारंभ, अंत]। हमें यह पता लगाना है कि क्या कोई अंतराल है जिसमें एक और अंतराल है।
इसलिए, यदि इनपुट [[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