हमें किसी भी आकार की एक सरणी दी गई है और कार्य दिए गए सरणी के उप-सरणी को 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर वाले तत्वों के साथ खोजना है।
इनपुट - int arr[] ={ 2, 1, 5, 6, 3, 4, 7, 6}
आउटपुट − अधिकतम लंबाई उपसरणी जिसमें 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर होता है − 2
स्पष्टीकरण - 0 या 1 के अंतर वाले सरणी में आसन्न तत्व {2, 1}, {5, 6}, { 3, 4} और {7.6} हैं। इसलिए, उपसरणी की अधिकतम लंबाई 2 है।
इनपुट - int arr[] ={ 2, 1, 7, 6, 5}
आउटपुट − अधिकतम लंबाई उपसरणी 0 या 1 के रूप में आसन्न तत्वों के बीच अंतर के साथ हैं − 3
स्पष्टीकरण - 0 या 1 के अंतर वाले सरणी में आसन्न तत्व {2, 1} और {7, 6, 5} हैं। इसलिए, उप-सरणी की अधिकतम लंबाई 3 है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
- एक प्रकार के पूर्णांकों की एक सरणी इनपुट करें जिसमें सकारात्मक और साथ ही नकारात्मक तत्व हो सकते हैं।
- एक सरणी के आकार की गणना करें और आगे की कार्यक्षमता के लिए एक सरणी और आकार को फ़ंक्शन में पास करें।
- अस्थायी चर i लें और इसे 0 और अधिकतम चर पर सेट करें और इसे 0 पर सेट करें।
- i से सरणी के आकार तक लूप प्रारंभ करें।
- लूप के अंदर, j को i पर सेट करें
- एक और लूप शुरू करें जो सबएरे की गणना आसन्न तत्वों के साथ करेगा चाहे वह itis 0 हो या नहीं।
- लूप के अंदर, i का मान बढ़ाएँ।
- अस्थायी को i-j+1 पर सेट करें
- जांचें कि क्या अधिकतम तापमान से कम है तो अधिकतम तापमान पर सेट करें।
- जांचें कि क्या j, i के बराबर है, तो i का मान बढ़ाएँ
- अधिकतम लौटाएं
- परिणाम प्रिंट करें।
उदाहरण
#include<bits/stdc++.h> using namespace std; //function to calculate maximum Length subarray with // 0 or 1 difference between adjacent elements int maximum_diff(int arr[], int size){ int i = 0; int maximum = 0; while (i < size){ int j = i; while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){ i++; } int temp = i - j + 1; if (maximum < temp){ maximum = temp; } if(j == i){ i++; } } return maximum; } int main(){ int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Maximum length subarray with difference between adjacent elements as either 0 or 1 are: "<< maximum_diff(arr, size); }
इनपुट
Maximum length subarray with difference between adjacent elements as either 0 or 1 are: 2