এক গবেষকের সাইটেশন (উদ্ধৃতি) অ্যারে দেওয়া আছে (নন-নেগেটিভ পূর্ণসংখ্যা)। গবেষকের h-ইন্ডেক্স ক্যালকুলেট করতে হবে। h-ইন্ডেক্সের ডেফিনিশন: "এক বিজ্ঞানীর ইন্ডেক্স h হলে তার N টি পেপারের মধ্যে h টির কমপক্ষে h কটা সাইটেশন আছে, আর বাকি N-h টির সর্বোচ্চ h সাইটেশন।"
উদাহরণ: citations = [3,0,6,1,7] হলে আউটপুট ৩। কারণ ৫ টি পেপার, সাইটেশন ৩,০,৬,১,৭। গবেষকের ৩ টি পেপারে কমপক্ষে ৩ সাইটেশন, বাকি ২ টিতে সর্বোচ্চ ৩ সাইটেশন, তাই h-ইন্ডেক্স ৩।
সমাধানের ধাপগুলো:
n := c.size(), আকারn+1-এর একটি অ্যারেbucketবানান।i = 0থেকেn-1পর্যন্ত:x := c[i]- যদি
x >= n,bucket[n]++, অন্যথায়bucket[x]++
cnt := 0i = nথেকে0পর্যন্ত:cnt += bucket[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