274. H-Index
2016-03-21 04:00
190 查看
Given an array of citations (each citation is a non-negative integer) of a researcher, write a function to compute the researcher's h-index.
According to the definition of h-index on Wikipedia: "A scientist has index h if h of
his/her N papers have at least h citations each, and the other N − h papers have no more thanh citations
each."
For example, given
in total and each of them had received
researcher has
each and the remaining two with no more than
each, his h-index is
Note: If there are several possible values for
the maximum one is taken as the h-index.
Hint:
An easy approach is to sort the array first.
What are the possible values of h-index?
A faster approach is to use extra space.
Solution 1 Sort
First, sort the array, and there are n - i elements(including citations[i]) on the right-hand side of citations[i], so there are
n - i elements >= citations[i], let h = n - i, if citations[i] >= n - 1, there are must be n - i elements that >= n - i, so n - i is what we need, because we want the maximum of h, so we start i from 0.
http://www.cnblogs.com/co0oder/p/5296417.html
Solution2 O(N) without sort
According to the definition of h-index on Wikipedia: "A scientist has index h if h of
his/her N papers have at least h citations each, and the other N − h papers have no more thanh citations
each."
For example, given
citations = [3, 0, 6, 1, 5], which means the researcher has
5papers
in total and each of them had received
3, 0, 6, 1, 5citations respectively. Since the
researcher has
3papers with at least
3citations
each and the remaining two with no more than
3citations
each, his h-index is
3.
Note: If there are several possible values for
h,
the maximum one is taken as the h-index.
Hint:
An easy approach is to sort the array first.
What are the possible values of h-index?
A faster approach is to use extra space.
Solution 1 Sort
First, sort the array, and there are n - i elements(including citations[i]) on the right-hand side of citations[i], so there are
n - i elements >= citations[i], let h = n - i, if citations[i] >= n - 1, there are must be n - i elements that >= n - i, so n - i is what we need, because we want the maximum of h, so we start i from 0.
http://www.cnblogs.com/co0oder/p/5296417.html
public int hIndex(int[] citations) { Arrays.sort(citations); int n = citations.length; for (int i = 0; i < n; i++) if (citations[i] >= n - i) return n - i; return 0; }
Solution2 O(N) without sort
//https://leetcode.com/discuss/55952/my-o-n-time-solution-use-java public static int hIndex2(int[] citations) { int length = citations.length; if (length == 0) { return 0; } int[] array2 = new int[length + 1]; for (int i = 0; i < length; i++) { if (citations[i] > length) { array2[length] += 1; } else { array2[citations[i]] += 1; } } int t = 0; for (int i = length; i >= 0; i--) { t = t + array2[i]; if (t >= i) { return i; } } return 0; }
相关文章推荐
- __int64与long long
- CentOS7安装vim7.4
- 新新新新新新到不行的新手手向:Spring在Eclipse中的配置方法
- Android Studio 常见问题
- [LeetCode] Range Sum Query 2D - Mutable 二维区域和检索 - 可变
- 学习Coding-iOS开源项目日志(一)
- 手机/电脑的定位方式
- Angular报错
- Python高级:细说Python浅拷贝和深拷贝
- Python高级:细说Python浅拷贝和深拷贝
- Mac NTFS 解决方法
- JAVA+MYSQL+JDBC
- Python操作XML和TXT
- Python读取ini文件
- Python操作XML
- thinkPHP的D方法和M方法用法和区别
- 分布式架构分享dubbo zookeeper restful
- 建立交叉编译环境
- Unity Shaders and Effects Cookbook (1-5)使用2D渐变纹理模拟BRDF(双向反射分布函数)
- AsyncTask原理