포스트

H-Index

LeetCode 274. H-Index

원문

Given an array of integers citations where citations[i] is the number of citations a researcher received for their ith 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 least h papers that have each been cited at least h times.

풀이

우선 citations를 정렬한다.

  1. 오름차순으로 정렬
    • i의 초기값은 citations의 길이 - 1이고, count의 초기값은 0이다.
    • i가 음수가 되거나 countcitations[i]보다 크거나 같아질 때까지 다음을 반복한다.
      • i에서 1 빼기
      • count에 1 더하기
    • 반복문에서 나오면 count를 반환한다.
  2. 내림차순으로 정렬
    • citations를 순회한다.
    • citations[i]i + 1보다 작으면 i를 반환한다.
    • 순회가 끝났다면 i + 1, 즉 citations의 길이를 반환한다.

코드

Python

1
2
3
4
5
6
7
8
9
class Solution:
    def hIndex(self, citations: List[int]) -> int:
        citations.sort(reverse=True)

        for i in range(len(citations)):
            if citations[i] < i + 1:
                return i

        return i + 1

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int hIndex(int[] citations) {
        Arrays.sort(citations);
        int i = citations.length - 1;
        int count = 0;

        while (i > -1 && count < citations[i]) {
            i--;
            count++;
        }

        return count;
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.