LeetCode-Hインデックス

アルゴリズム記録

LeetCodeトピック:

  整数配列の引用が与えられます。ここで、citations [i]は、研究者のi番目の論文が引用された回数です。研究者のh指数を計算して返します。

  ウィキペディアのh指数の定義によると、hは「非常に引用されている」を表し、研究者のh指数は、少なくともh回引用されたhの論文の合計を指します。そして、残りのn-hの論文のそれぞれは、h回以内に引用されます。

  hの可能な値が複数ある場合、h指数はそれらの中で最大です。


説明する

1.トピック

输入:citations = [3,0,6,1,5]
输出:3 
解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。
     由于研究者有 3 篇论文每篇至少被引用了 3 次,其余两篇论文每篇被引用不多于 3 次,所以她的 h 指数是 3。
复制代码

2.分析

  • 最初は、すべての論文の引用数がゼロより大きいと想定できるため、これは間違いなく真実です。配列全体をトラバースした後、現在のトラバース要素よりも大きい引用が表示されるたびに、現在の論文数は最善ではなく、増やす必要があります。
  • ただし、直接トラバースすると、結果データを増やすために小さな参照が使用されているように見える場合があります。これにより、中央のデータが比較的大きくなるため、最初に並べ替える必要があります。
  • 大から小へと移動し、循環するデータの現在の引用が記事の数よりも多い場合、この記事を高引用シーケンスに含めることができ、最後まで数を増やすことができないことを意味します。
class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int ret = 0, n = citations.length;
        for(int i = n - 1; i >= 0; i--) {
            if(citations[i] > ret) {
                ret++;
            }
        }
        return ret;
    }
}
复制代码

要約する

頭の体操。

おすすめ

転載: juejin.im/post/7101639290571980807