Medium
Related Topics: Array / Sorting / Counting Sort
LeetCode Source
解题想法
这题我卡在如何处理累积 index
数目,但最后才知道不用算累积
用储存容器的 index 跟 index
的数目比较就好
首先先把 citations
由大排到小 sort(citations.begin(), citations.end(), greater());
在来比较 i+1
跟 citations[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; }};