国内的优秀网站,城关网站seo,网页端,荣县住房和城乡建设厅网站一、题目 二、思路
h 指数是高引用引用次数#xff0c;而 citations 数组中存储的就是不同论文被引用的次数#xff0c;并且是按照升序排列的。也就是说 h 指数将整个 citations 数组分成了两部分#xff0c;左半部分是不够引用 h 次 的论文#xff0c;右半部分论文的引用…一、题目 二、思路
h 指数是高引用引用次数而 citations 数组中存储的就是不同论文被引用的次数并且是按照升序排列的。也就是说 h 指数将整个 citations 数组分成了两部分左半部分是不够引用 h 次 的论文右半部分论文的引用次数都是大于等于 h 的。因此可以采用二分查找的思路来进行求解 h 指数。需要注意的是有时论文的引用次数并不一定是 citations 数组中的数值。 例如citations [0, 1, 2, 4, 5, 6]其 h 指数是 3。
三、题解
class Solution {public int hIndex(int[] citations) {int n citations.length;int left 0, right n - 1;int ans Math.min(1, citations[0]);// citations[0] 是引用次数最少的论文while (left right) {int mid left (right - left)/2;// n - mid 代表右半部分的数组为符合条件的论文数量// 比较 符合条件的论文数量 和 citations[mid]// h 指数ans更新为二者中较小的if (n - mid citations[mid]) {ans Math.max(ans, citations[mid]);left mid 1;} else if (n - mid citations[mid]) {ans Math.max(ans, n - mid);right mid - 1;} else {ans citations[mid];break;}}return ans;}
}