LeetCode 274. H 指数

题目描述

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. 最大数 中等 排序
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/74984340
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!