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

सी++ में एच-इंडेक्स


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

तो अगर इनपुट उद्धरणों की तरह है =[3,0,6,1,7], तो आउटपुट 3 होगा, क्योंकि यह इंगित करता है कि शोधकर्ता के पास पांच पेपर हैं, उन्हें 3, 0, 6, 1, 7 उद्धरण मिले हैं क्रमश। चूंकि शोधकर्ता के पास कम से कम 3 उद्धरणों के साथ 3 पेपर हैं और शेष दो पेपर में 3 से अधिक उद्धरण नहीं हैं, तो एच-इंडेक्स 3 है।

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

  • n :=सरणी का आकार, n + 1 के आकार की बकेट नामक एक सरणी बनाएं

  • मैं के लिए 0 से n - 1 की सीमा में

    • एक्स:=सी[i]

    • अगर x>=n, तो बकेट[n] को 1 से बढ़ा दें, नहीं तो बकेट[x] को 1 से बढ़ा दें

  • सीएनटी:=0

  • n से 0 तक की श्रेणी में i के लिए -

    • बाल्टी द्वारा cnt बढ़ाएं[i]

    • अगर cnt>=i, तो i

      . लौटाएं
  • वापसी - 1

उदाहरण(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int hIndex(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 = {3,0,6,1,7};
   cout << (ob.hIndex(v));
}

इनपुट

[3,0,6,1,7]

आउटपुट

3

  1. स्विच स्टेटमेंट C++

    C++ में स्विच स्टेटमेंट का उपयोग कैसे करें सशर्त बयान सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता है। इन कथनों का उपयोग किसी प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक कब निष्पादित किए जाने चाहिए। C++ में उपयोग किए जाने वाले मुख्य कंडीश

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की