हमें आकार N की पूर्णांकों की एक सरणी दी गई है। सरणी में पूर्णांक यादृच्छिक क्रम में होते हैं। कार्य सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर ढूंढना है। हमें एक ऐसी संख्या ढूंढनी है जो सरणी में दो बार प्रकट होती है और उसके सूचकांकों के बीच का अंतर अधिकतम है। यदि ऐसे अधिक युग्म हैं तो हम सूचकांकों के बीच ऐसे अधिकतम अंतर को संग्रहीत करेंगे।
इनपुट
Arr[] = { 2, 1, 3, 1, 3, 2, 5, 5 }. आउटपुट
सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर: 5
व्याख्या
तत्व के युग्म और उनके सूचकांकों के बीच अंतर निम्नानुसार हैं:
(2,2) Arr[0] और Arr[5] 5-0=5 अब तक अधिकतम अंतर 5 है (1,1) Arr[1] और Arr[3] 3-1=2 अब तक अधिकतम अंतर 5 है (3,3) Arr[2] और Arr[4] 4-2=2 अब तक अधिकतम अंतर 5 है (5,5) Arr[6] और Arr[7] 7-6=1 अब तक अधिकतम अंतर 5 है
इनपुट
Arr[] = { 2, 2, 3, 4, 8, 3, 4, 4, 8, 7 }. आउटपुट
सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर: 4
व्याख्या
तत्व के युग्म और उनके सूचकांकों के बीच अंतर निम्नानुसार हैं:
(2,2) Arr[0] और Arr[1]; 1-0=1; अब तक अधिकतम अंतर 1 है (3,3) Arr[2] और Arr[5]; 5-2=3; अब तक अधिकतम अंतर 3 है (4,4,4) Arr[3], Arr[6], Arr[7]; 7-6=1, 6-3=3, 7-3=4; अब तक अधिकतम अंतर 4 है (8,8) Arr[4] और Arr[8]; 8-4=4; अब तक अधिकतम अंतर 4 है
उपयोग किया गया दृष्टिकोण
यादृच्छिक क्रम में दोहराई गई संख्याओं वाली पूर्णांकों की एक सरणी घोषित करें (Arr[])।
सरणी के आकार को संग्रहीत करने के लिए एक चर बनाएं (N)।
फ़ंक्शन maxDifference(int Arr[], int n) सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर (maxD) की गणना के लिए उपयोग किया जाता है।
maxDifference() के अंदर हमने maxD घोषित किया है जो अब तक मिले अधिकतम सूचकांक अंतर को संग्रहीत करता है।
पहले तत्व (सूचकांक i=0) से शुरू करके फॉर लूप का उपयोग करके सरणी को पार करें।
नेस्टेड फॉर लूप में शेष सरणी (j=i+1) को अंतिम सूचकांक तक पार करें।
यदि हमें Arr[i] के समान तत्व मिलते हैं तो हम इसके सूचकांकों i, j के बीच का अंतर निकालते हैं और यदि यह maxD के पिछले मान से अधिक है, तो हम 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("सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर: %d", maxDifference(Arr, N)); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
सरणी में एक तत्व के पहले और अंतिम सूचकांकों के बीच अधिकतम अंतर: 5