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

C++ में H-इंडेक्स II


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

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

इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:

  • ans := 0, low := 0, n := सरणी का आकार, high := n - 1
  • यदि सरणी का आकार = 0, तो 0 लौटाएं
  • जब तक low <= high
    • mid := low + (high - low)/2
    • यदि A[mid] = सरणी का आकार - mid, तो A[mid] लौटाएं
    • अन्यथा जब A[mid] > n - mid, तो high := mid - 1
    • अन्यथा low := mid + 1
  • n - high - 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++ में Switch स्टेटमेंट: एक पूर्ण गाइड

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

  1. - C++ में मितव्ययी संख्या (Frugal Number)

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

  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

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