Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

सी में सरणी में किसी तत्व की पहली और आखिरी अनुक्रमणिका के बीच अधिकतम अंतर


हमें 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

  1. सी ++ में एसटीडी ::वेक्टर और एसटीडी ::सरणी के बीच अंतर

    वेक्टर और सरणी के बीच अंतर निम्नलिखित हैं - वेक्टर तत्वों को संग्रहीत करने के लिए अनुक्रमिक कंटेनर है न कि अनुक्रमणिका आधारित। सरणी एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत करता है और यह अनुक्रमणिका आधारित है। वेक्टर प्रकृति में गतिशील है, इसलिए तत्वों को सम्मिलित क

  1. ArrayBlockingQueue और ArrayDeque के बीच अंतर

    ArrayBlockingQueue तत्वों को FIFO क्रम में संग्रहीत करता है। तत्व का सम्मिलन हमेशा कतार की पूंछ पर होता है और तत्व को हटाना हमेशा कतार के शीर्ष से होता है। यह थ्रेड सुरक्षित है और यह बंधी हुई सरणी कतार है इसलिए एक बार बनने के बाद, क्षमता को बदला नहीं जा सकता है। यह ब्लॉकिंग कतार का कार्यान्वयन है।

  1. पायथन में क्रमबद्ध सरणी में तत्व की पहली और अंतिम स्थिति खोजें

    मान लीजिए कि हमारे पास पूर्णांक A की एक सरणी है। इसे आरोही क्रम में क्रमबद्ध किया गया है, हमें दिए गए लक्ष्य मान की प्रारंभिक और समाप्ति स्थिति ज्ञात करनी है। जब लक्ष्य सरणी में नहीं मिलता है, तो [-1, -1] लौटाएं। तो अगर सरणी [2,2,2,3,4,4,4,4,5,5,6] की तरह है, और लक्ष्य 4 है, तो आउटपुट [4,7] होगा इस