Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ कोड इंडेक्स खोजने के लिए जहां यह हैश टकराव है

मान लीजिए कि हमारे पास n तत्वों के साथ एक संख्या p और एक अन्य सरणी X है। पी बाल्टी के साथ एक हैश टेबल है। बाल्टियों की संख्या 0 से p-1 तक होती है। हम एक्स से एन नंबर डालना चाहते हैं। हम एक्स [i] के लिए मान रहे हैं, इसकी बाल्टी हैश फ़ंक्शन एच (एक्स [i]) द्वारा चुनी जाएगी, जहां एच (के) =के मॉड पी। एक बाल्टी में एक से अधिक तत्व नहीं हो सकते। यदि हम पहले से भरी हुई बाल्टी में एक संख्या डालना चाहते हैं, तो हम कहते हैं कि एक "टकराव" होता है। हमें उस इंडेक्स को वापस करना होगा जहां टक्कर हुई है। अगर कोई टक्कर नहीं है, तो -1 लौटें।

इसलिए, यदि इनपुट p =10 जैसा है; एक्स =[0, 21, 53, 41, 53], तो आउटपुट 3 होगा, क्योंकि पहले वाले को 0 में डाला जाएगा, दूसरे को 1 पर, तीसरे को 3 पर, लेकिन चौथा वाला 1 में डालने का प्रयास करेगा लेकिन एक टक्कर है, यहाँ सूचकांक 3 है।

कदम

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

n := size of X
Define an array arr of size: p and fill with 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := X[i]
   if arr[x mod p] is non-zero, then:
      return i
   increase arr[x mod p] by 1
return -1
तक

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
int solve(int p, vector<int> X){
   int n = X.size();
   int arr[p] = { 0 };
   for (int i = 0; i < n; i++){
      int x = X[i];
      if (arr[x % p]){
         return i;
      }
      arr[x % p]++;
   }
   return -1;
}
int main(){
   int p = 10;
   vector<int> X = { 0, 21, 53, 41, 53 };
   cout << solve(p, X) << endl;
}

इनपुट

10, { 0, 21, 53, 41, 53 }

आउटपुट

3

  1. न्यूनतम अंकगणित माध्य विचलन खोजने के लिए C++ कोड

    मान लीजिए कि हमारे पास 3 तत्वों के साथ एक सरणी ए है। ए [1] दो तत्वों ए [0] और ए [3] का अंकगणितीय माध्य है यदि ए [0] + ए [2] =2 * ए [1]। तीन संख्याओं d(A[0], A[1], A[2]) का अंकगणित माध्य विचलन है|A[0] + A[2] - 2*A[1]|। हम निम्नलिखित संक्रियाओं को कितनी भी बार कर सकते हैं:सूचकांक {0, 1, 2} से दो अनुक्

  1. C++ कोड बैटरी कॉम्बो की संख्या का पता लगाने के लिए

    मान लीजिए, हमारे पास n बैटरियां हैं जिनका अधिकतम 5 बार उपयोग किया जा सकता है। हमारे पास कुछ डिवाइस हैं जिन्हें तीन बैटरी की आवश्यकता होती है और डिवाइस के प्रत्येक उपयोग से बैटरी की उपयोग संख्या 1 बढ़ जाती है। यदि हमें उपकरणों को k बार उपयोग करना है, तो हमें यह पता लगाना होगा कि हम डिवाइस को पावर देन

  1. सी ++ में एक स्ट्रिंग में किसी वर्ण की अंतिम अनुक्रमणिका पाएं

    मान लीजिए कि हमारे पास एक स्ट्रिंग str. हमारे पास एक और चरित्र है च। हमारा काम स्ट्रिंग में ch का अंतिम सूचकांक खोजना है। मान लीजिए कि स्ट्रिंग हैलो है, और वर्ण ch =l है, तो अंतिम अनुक्रमणिका 3 होगी। इसे हल करने के लिए, हम सूची को दाएँ से बाएँ पार करेंगे, यदि वर्ण l के समान नहीं है, तो अनुक्रमणिका