हमें N आकार के पूर्णांकों की एक सरणी दी गई है। सरणी में यादृच्छिक क्रम में पूर्णांक होते हैं। कार्य सरणी में किसी तत्व की पहली और अंतिम अनुक्रमणिका के बीच अधिकतम अंतर खोजना है। हमें एक संख्या ज्ञात करनी है जो सरणी में दो बार प्रकट होती है और इसके सूचकांकों के बीच का अंतर अधिकतम होता है। अगर ऐसे और जोड़े हैं तो हम इंडेक्स के बीच इस तरह के अधिकतम अंतर को स्टोर करेंगे।
इनपुट
Arr[] = { 2,1,3,1,3,2,5,5 }.
आउटपुट −सरणी में किसी तत्व की पहली और अंतिम अनुक्रमणिका के बीच अधिकतम अंतर -5
स्पष्टीकरण −तत्वों के जोड़े और उनके सूचकांकों के बीच अंतर इस प्रकार हैं -
(2,2) Arr[0] and Arr[5] 5-0=5 max difference till now is 5 (1,1) Arr[1] and Arr[3] 3-1=2 max difference till now is 5 (3,3) Arr[2] and Arr[4] 4-2=2 max difference till now is 5 (5,5) Arr[6] and Arr[7] 7-6=1 max difference till now is 5. है
इनपुट
Arr[] = { 2,2,3,4,8,3,4,4,8,7 }.
आउटपुट −सरणी में किसी तत्व की पहली और अंतिम अनुक्रमणिका के बीच अधिकतम अंतर − 4
स्पष्टीकरण −तत्वों के जोड़े और उनके सूचकांकों के बीच अंतर इस प्रकार हैं -
(2,2) Arr[0] and Arr[1] ; 1-0=1; max difference till now is 1 (3,3) Arr[2] and Arr[5] ; 5-2=3; max difference till now is 3 (4,4,4) Arr[3],Arr[6],Arr[7] ; 7-6=1,6-3=3,7-3=4; max difference till now is 4 (8,8) Arr[4] and Arr[8] ; 8-4=4 ; max difference till now is 4. है
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांकों की एक सरणी घोषित करें जिसमें यादृच्छिक क्रम में दोहराई गई संख्याएँ हों। ( Arr[] )
-
सरणी के आकार को संग्रहीत करने के लिए एक चर बनाएँ। (एन)
-
फ़ंक्शन maxDifference(int Arr[],int n) का उपयोग किसी सरणी में किसी तत्व के पहले और अंतिम अनुक्रमणिका के बीच अधिकतम अंतर (maxD) की गणना करने के लिए किया जाता है।
-
मैक्सडिफरेंस () के अंदर हमने घोषित किया कि मैक्सडी का उपयोग अब तक मिले अधिकतम इंडेक्स अंतर को स्टोर करने के लिए किया जाता है।
-
पहले तत्व से शुरू (सूचकांक i=0 ) लूप के लिए उपयोग करके सरणी को पार करें।
-
लूप के लिए नेस्टेड में शेष सरणी (j=i+1) को अंतिम अनुक्रमणिका तक पहुंचने तक पार करें।
-
यदि हम Arr[i] के समान तत्व पाते हैं, तो हम इसकी अनुक्रमणिका i,j के बीच अंतर की गणना करते हैं और यदि यह maxD के पिछले मान से अधिक है, तो हम maxD को अपडेट करते हैं।
-
लूप के लिए दोनों के अंत तक इसे जारी रखें।
-
अधिकतम डी में संग्रहीत परिणाम लौटाएं।
उदाहरण
#include <stdio.h> int maxDifference(int arr[],int n){ int maxD=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(arr[i]==arr[j] && (j-i)>maxD) maxD=j-i; } } return maxD; } int main(){ int Arr[] = {1, 4, 1, 3, 3, 5, 4, 5, 2}; int N = sizeof(Arr) / sizeof(Arr[0]); printf("Maximum difference between first and last indexes of an element in array : %d" ,maxDifference(Arr, N); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Maximum difference between first and last indexes of an element in array : 5