首先,通过题目可以知道,h值的不可能大于数组的长度n。步骤如下:
1.对数组从小到大排序。
2.从0开始遍历,如果引用量大于或等于剩余论文的数量,直接返回剩余论文的数量,秒了。
class Solution {
public:
int hIndex(vector<int>& citations) {
int n = citations.size();
sort(citations.begin(), citations.end());
for (int i = 0; i < n; ++i) {
if (citations[i] >= n - i)
return n - i;
}
return 0;
}
};
因为如果引用量小于剩余论文的数量,那h值肯定就是由剩余的论文来决定的,h值要么就是继续在剩余论文中找,要么就是剩余论文的数量。相当于变成了只剩下后面部分的一道新题。