forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
HIndex.java
46 lines (42 loc) · 1.04 KB
/
HIndex.java
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.Arrays;
/**
* https://leetcode.com/articles/h-index/
*/
/**
* TestCase
* [0]
* [1]
* []
* [100]
*/
public class HIndex {
// 耗时4ms,时间复杂度O(nlgn)
public int hIndex(int[] citations) {
Arrays.sort(citations);
int hIndex = 0;
for (int i = citations.length - 1; i >= 0; i--) {
hIndex = Math.max(hIndex, Math.min(citations.length - i, citations[i]));
}
return hIndex;
}
// 耗时1ms,时间复杂度O(n)
public int hIndex2(int[] citations) {
/**
* 大于文章数的引用可以合并到一起
*/
int n = citations.length;
int[] f = new int[n + 1];
for (int k : citations) {
f[Math.min(k, n)]++;
}
int hindex = 0;
/**
* i表示引用数,j表示大于等于该引用数的总文章数
*/
for (int i = n, j = 0; i >= 0; i--) {
j += f[i];
hindex = Math.max(hindex, Math.min(j, i));
}
return hindex;
}
}