はじめに
LeetCodeの問題を解答します。
なるべく、問題の和訳と詳細なコメントを書いています。
余裕があれば、複数のアプローチの解答と、実際の面接を想定して英語での解法やコメントを書いています。
これまでこのサイトでメモしてきた問題はこのページに全て載せています。
二分探索、連結リストなど、テーマを絞って集中的に解きたい方は以下の記事が有用です。
LeeetCodeの問題をアルゴリズムとデータ構造による分類しました。
また、LeetCodeではAtcoderと違ってクラスと関数を定義して解答します。
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめています。
はじめてLeetCodeに触れる方はこちらの記事も役に立つと思います。
詳細
問題
原文
Given an array of integers
citations
wherecitations[i]
is the number of citations a researcher received for theirith
paper, return the researcher’s h-index.According to the definition of h-index on Wikipedia: The h-index is defined as the maximum value of
h
such that the given researcher has published at leasth
papers that have each been cited at leasth
times.
Example 1:
1234 Input: citations = [3,0,6,1,5]Output: 3Explanation: [3,0,6,1,5] means the researcher has 5 papers in total and each of them had received 3, 0, 6, 1, 5 citations respectively.Since the researcher has 3 papers with at least 3 citations each and the remaining two with no more than 3 citations each, their h-index is 3.Example 2:
12 Input: citations = [1,3,1]Output: 1
Constraints:
n == citations.length
1 <= n <= 5000
0 <= citations[i] <= 1000
内容(和訳)
整数の配列 citations が与えられます。citations[i] は、i 番目の論文に対して研究者が受け取った引用回数です。研究者の h 指数を返してください。
Wikipedia の h 指数の定義によれば、h 指数は、与えられた研究者が少なくとも h 回引用された h 個の論文を出版している最大の h の値です。
※ChatGPTによる翻訳
解答
解答1:Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
""" h can be incremented when number of citations is higher than number of paper. For example, citations = [5,4,3,2,1], number of citations :number of paper ・5>1 →h=1 ・4>2 →h=2 ・3=3 →h=3 ・2<4 →h=3 ・1<5 →h=3 """ class Solution: def hIndex(self, citations: List[int]) -> int: #Sort the list decreasing citations.sort(reverse=True) #The value of H will be incremented when the i-th element fulfills the condition. h = 0 #Traverse each element. for i in range(len(citations)): #H is incremented when i-th element(number of citation of i-th paper) is hight than number of paper. if citations[i] >= i+1: h = i+1 return h |
i個の論文がある時、i個目の論文の被引用数がiよりも大きければhに1を加えます。
論文が発表された順番は無関係で、被引用数は降順にして論文の個数と比較して良いようです。
例↓
論文が1個:被引用数が1以上ならhに1を加える
論文が2個:被引用数が2以上ならhに1を加える
論文が3個:被引用数が3以上ならhに1を加える
終わりに
補足・参考・感想
問題を分類しました。テーマごとに集中して問題を解くことができます。
LeeetCodeの問題をアルゴリズムとデータ構造による分類
LeetCodeに特有の内容など、知っておくと役に立つかもしれないことをまとめました。
他の問題もどうぞ
コメント