LeetCode 274. H 指数
题目描述
思路分析
解法一:排序后扫描(推荐)
核心思路:
- 将引用次数降序排序。
- 从前向后扫描,找到最大的
h使得citations[h-1] >= h。- 该
h即为 H 指数。
复杂度分析:
- 时间复杂度:O(n log n),其中 n 表示论文数量。
- 空间复杂度:O(1),排序额外空间不计入。
import java.util.Arrays;
class Solution {
public int hIndex(int[] citations) {
Arrays.sort(citations);
int n = citations.length;
int h = 0;
// 从大到小扫描
for (int i = n - 1; i >= 0; i--) {
if (citations[i] >= n - i) {
h = n - i;
} else {
break;
}
}
return h;
}
}
import "sort"
func hIndex(citations []int) int {
sort.Ints(citations)
n := len(citations)
h := 0
// 从大到小扫描
for i := n - 1; i >= 0; i-- {
if citations[i] >= n-i {
h = n - i
} else {
break
}
}
return h
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 275. H 指数 II | 中等 | 二分查找 |
| 215. 数组中的第K个最大元素 | 中等 | 排序 |
| 347. 前 K 个高频元素 | 中等 | 排序 |
| 414. 第三大的数 | 简单 | 排序 |
| 179. 最大数 | 中等 | 排序 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!