मान लीजिए कि हमारे पास N विशिष्ट पूर्णांकों की एक सरणी है। हमें एक अंतराल [एल, आर] में अधिकतम तत्व को इस तरह खोजना होगा कि अंतराल में दिए गए एन पूर्णांकों में से एक हो और 1 <=एल <=आर <=10 5 ।
तो अगर सरणी Arr =[5, 10, 200] की तरह है, तो आउटपुट 99990 है। तो सभी संभावित अंतराल [1, 9], [6, 99] और [11, 100000] हैं। पिछले वाले में अधिकतम पूर्णांक हैं जैसे 99990
विचार सरल है। हम उस तत्व को ठीक कर देंगे जिसे हम चाहते हैं कि हमारा अंतराल शामिल हो। अब, हम देखेंगे कि हम अन्य तत्वों को ओवरलैप किए बिना अपने अंतराल को बाएँ और दाएँ कैसे बढ़ा सकते हैं। तो हमें पहले सरणी को क्रमबद्ध करना होगा, फिर एक निश्चित तत्व के लिए, हम पिछले और अगले तत्व का उपयोग करके अंत निर्धारित करते हैं। हम कोने के मामलों का ध्यान रखेंगे। इसलिए जब हम पहले और आखिरी इंटरवल को फिक्स कर रहे होते हैं। इस तरह प्रत्येक तत्व i के लिए, हम अंतराल की अधिकतम लंबाई पाते हैं।
उदाहरण
#include<iostream> #include<algorithm> #include<vector> using namespace std; int maximumSize(vector<int>& vec, int n) { vec.push_back(0); vec.push_back(100001); n += 2; sort(vec.begin(), vec.end()); int max_value = 0; for (int i = 1; i < n - 1; i++) { int Left = vec[i - 1] + 1; int Right = vec[i + 1] - 1; int count = Right - Left + 1; max_value = max(max_value, count); } return max_value; } int main() { vector<int> v; v.push_back(200); v.push_back(10); v.push_back(5); int n = v.size(); cout << "Maximum Size is: " << maximumSize(v, n); }
आउटपुट
Maximum Size is: 99990