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

सी++ में उद्धरणों की सूची से एच-इंडेक्स खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक शोधकर्ता के उद्धरणों की एक सरणी है। हमें शोधकर्ता के एच-इंडेक्स की गणना करने के लिए एक फ़ंक्शन को परिभाषित करना होगा। जैसा कि हम जानते हैं कि एच-इंडेक्स एक मीट्रिक है जिसका उपयोग शोधकर्ता के कागजात के प्रभाव की गणना के लिए किया जाता है। औपचारिक रूप से एच-इंडेक्स को इस प्रकार परिभाषित किया जा सकता है:"एक शोधकर्ता के पास इंडेक्स एच होता है यदि उनके एन पेपर्स में से प्रत्येक में कम से कम एच उद्धरण होते हैं, और अन्य एन-एच पेपर में एच उद्धरण से अधिक नहीं होते हैं।"

इसलिए, यदि इनपुट उद्धरणों की तरह है =[5, 4, 1, 2, 6], तो आउटपुट 3 होगा, क्योंकि कम से कम 3 पेपर में प्रत्येक में कम से कम 3 उद्धरण हैं - 4, 5, 6।

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

  • n :=सरणी का आकार, n + 1 आकार की बकेट नामक एक सरणी बनाएं
  • मैं के लिए 0 से n - 1 की सीमा में
    • x :=c[i]
    • अगर x>=n, तो बकेट[n] को 1 से बढ़ा दें, नहीं तो बकेट[x] को 1 से बढ़ा दें
  • सीएनटी:=0
  • मैं के लिए n से 0 तक की श्रेणी में:
    • बकेट द्वारा cnt बढ़ाएं[i]
    • अगर cnt>=i, तो i को वापस कर दें
  • वापसी - 1

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(vector<int>& c) {
      int n = c.size();
      vector <int> bucket(n + 1);
      for(int i = 0; i < n; i++){
         int x = c[i];
         if(x >= n){
            bucket[n]++;
         } else {
            bucket[x]++;
         }
      }
      int cnt = 0;
      for(int i = n; i >= 0; i--){
         cnt += bucket[i];
         if(cnt >= i)return i;
         } return -1;
      }
};
main(){
   Solution ob;
   vector<int> v = {5, 4, 1, 2, 6};
   cout << (ob.solve(v));
}

इनपुट

[5, 4, 1, 2, 6]

आउटपुट

3

  1. सी++ में डबल लिंक्ड लिस्ट का आकार खोजने का कार्यक्रम

    इस समस्या में हमें एक डबल लिंक्ड लिस्ट दी जाती है। हमारा काम C++ में डबली लिंक्ड लिस्ट का आकार खोजने के लिए एक प्रोग्राम बनाना है। डबल लिंक्ड लिस्ट एक विशेष प्रकार की लिंक्ड लिस्ट है जिसमें सिंगल लिंक्ड लिस्ट की तुलना में आगे और पीछे दोनों तरह से नेविगेशन संभव है। डबल लिंक्ड सूचियों की अवधारणा को

  1. सी ++ प्रोग्राम ऑर्डर-सांख्यिकीय एल्गोरिदम का उपयोग करके दी गई सूची से सबसे बड़ी संख्या खोजने के लिए

    ऑर्डर-सांख्यिकीय एल्गोरिथम का उपयोग करके दी गई सूची से सबसे बड़ी संख्या खोजने के लिए यह एक C++ प्रोग्राम है। एल्गोरिदम Begin    function Insert() to insert nodes into the tree:    Arguments:       root, d.       Body of the function:     &n

  1. सी++ प्रोग्राम एडजेंसी लिस्ट को लागू करने के लिए

    एक ग्राफ की आसन्न सूची प्रतिनिधित्व लिंक्ड सूची प्रतिनिधित्व है। इस निरूपण में हमारे पास सूचियों की एक सरणी है सरणी का आकार V है। यहाँ V शीर्षों की संख्या है। दूसरे शब्दों में, हम कह सकते हैं कि हमारे पास विभिन्न सूचियों के V नंबर को संग्रहीत करने के लिए एक सरणी है। यदि कोई सूची शीर्षलेख u वर्टेक्स