[Py_Lv2] H-Index


問題の説明


H-Indexは科学者の生産力と影響力を測定する指標である.ある科学者のh-indexを表すh値を求めたいです.ウィキペディア1によると、H-Indexの計算は以下の通り.
ある科学者が発表したn編の論文の中で、h編以上の論文を引用し、残りの論文がh次以下に引用された場合、hの最高価格はこの科学者のh-indexである.
ある科学者が論文を発表する引用回数の配列参照をパラメータとして与えた場合,その科学者のH−Indexを返すために解関数を記述してください.

せいげんじょうけん

  • 科学者が発表した論文の数は1編以上1000編以下である.
  • 論文の引用回数は0回以上10000回以下である.
  • I/O例



    この科学者が発表した論文は5編あり、そのうち3編は3回以上引用された.また、残りの2つの論文は3回以下引用されたので、この科学者のh-indexは3である.

    方法


    2回目の質問説明を読むときに並べ替えたい質問を思い出します
    もちろん、これはソート部分の問題なので、ソートを行うのは正しいですが、ただ喜ばしいだけです.😎
    [引用]リストの長さは、発表された論文の数です.
    リスト内の各値は、参照の回数を表します.
    ここでの悩みは、戻り値をどのように検索するかです.
    1時間以上悩んだ
    時間が過ぎてよかった.
    [参照](References)リストの参照値の回数によって、H-index値が決まります.
    リストがソートされ、右側にリストされている値(参照回数を含む値)が最大値に達した場合、答えが得られる可能性があります.
    難しいですが、焼き芋を3個入れる機械があれば、3個とも蹴ることができる場所が4個あれば、4個とも蹴ることができる場所を見つけます.サツマイモを5個入れられるなら3個だけ?
    それは大丈夫です.
    せいぜい3つのサツマイモしかないなら、答えは5です.
    だから私は次のコードを完成しました.
    一番良さそうな答えとあまり違わない部分がまた気分が良くなりました
    論文引用回数の範囲は0以上であるため,一度も引用されなかった.
    したがってreturn 0が追加されました.
    今でもこんな気持ちになれる
    =============================================================
    def solution(citations):
        citations = sorted(citations)
        l = len(citations)
        for i in range(l):
            if citations[i] >= l-i:
                return l-i
        return 0