[LeetCode] 274. H-Index

Medium
Related Topics: Array / Sorting / Counting Sort
LeetCode Source

解题想法

这题我卡在如何处理累积 index 数目,但最后才知道不用算累积

用储存容器的 index 跟 index 的数目比较就好


首先先把 citations 由大排到小 sort(citations.begin(), citations.end(), greater());

在来比较 i+1citations[i] 的大小

i 小于等于 citations[i],则有这个解反之,则跳出迴圈回传答案

举例来说 citations = [3,0,6,1,5]

由大排到小 citations = [6,5,3,1,0]

此时观察

citations[0] = 6citations[1] = 5citations[2] = 3 # at most H-Index is 3citations[3] = 1citations[4] = 0

Python

class Solution:    def hIndex(self, citations: List[int]) -> int:        res = 0        citations.sort(reverse=True)        for i, cite in enumerate(citations, start=1):            if i <= cite:                res = i            else:                break        return res

start=1 代表说 i 这个 index 从 1 开始

C++

class Solution {public:    int hIndex(vector<int>& citations) {        sort(citations.begin(), citations.end(), greater());        int res = 0;        for (int i = 0; i < citations.size(); i++) {            if (i+1 <= citations[i])                 res = i+1;            else                break;        }        return res;    }};

这系列文被记录在 Top Interview 150 Series


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章