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

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

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

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

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

  • उत्तर:=0, निम्न:=0, एन:=सरणी का आकार, उच्च:=n - 1

  • यदि सरणी का आकार =0 है, तो 0 पर लौटें

  • जबकि कम <=उच्च -

    • मध्य :=निम्न + (उच्च-निम्न)/2

    • अगर ए [मध्य] =सरणी का आकार - मध्य, फिर ए [मध्य]

    • अन्यथा जब A[मध्य]> n – मध्य, फिर उच्च :=मध्य – 1

    • अन्यथा कम :=मध्य + 1

  • वापसी n - उच्च - 1

उदाहरण(C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int hIndex(vector<int>& A) {
      int ans = 0;
      int low = 0;
      int n = A.size();
      int high = n - 1;
      if(A.size() == 0) return 0;
      while(low <= high){
         int mid = low + (high - low) / 2;
         if(A[mid] == A.size() - mid){
            return A[mid];
         }
         else if(A[mid] > (n - mid)){
            high = mid - 1;
         }
         else low = mid + 1;
      }
      return n - (high + 1);
   }
};
main(){
   Solution ob;
   vector<int> v = {0,1,4,5,7};
   cout << (ob.hIndex(v));
}

इनपुट

[0,1,4,5,6]

आउटपुट

3

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

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

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

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

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

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