摘要:題目解答滿足這個的最大值不會超過數組的因為如果超過了,就不可能有這么多的數。所以就是把所有可能的個至少有個的記下來,然后找出最大的。因為是從后向前掃的,所以當前的就是滿足條件的最大數。
題目:
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 than h citations each."
For example, given citations = [3, 0, 6, 1, 5], which means the researcher has 5 papers in total and each of them had received 3, 0, 6, 1, 5 citations respectively. Since the researcher has 3 papers with at least 3 citations each and the remaining two with no more than 3 citations 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.
解答:
滿足這個index的最大值不會超過citations數組的len, 因為如果超過了,就不可能有這么多的paper數。所以brute force就是把所有可能的n個paper至少有n個citation的n記下來,然后找出最大的n。
代碼:
public int hIndex(int[] citations) { int maxHIndex = 0; for (int i = citations.length; i >= 0; i--) { int citNum = i; int count = 0; for (int j = 0; j < citations.length; j++) { if (citations[j] >= citNum) { count++; } } if (count >= citNum) { maxHIndex = Math.max(maxHIndex, citNum); } } return maxHIndex; }
Follow up是犧牲空間來換取時間,那就用另外一個數組來存當前index存在的文章數,然后從后往前相加,如果滿足條件就輸出這個最大的index。
舉個例子:
citations: 3, 0, 6, 1, 5 arr: 0 1 2 3 4 5 val: 1 1 1 2
那么從后向前掃的時候,記一個count,掃到arr(5)的時候,count=2 < 5, 不滿足;掃arr(4),count=2 < 4, 不滿足;掃arr(3), count=2+1=3 == 3, 滿足。因為是從后向前掃的,所以當前的index就是滿足條件的最大數。
代碼:
public int hIndex(int[] citations) { if (citations == null || citations.length == 0) return 0; int len = citations.length; int[] arr = new int[len + 1]; for (int i = len - 1; i >= 0; i--) { //最大的index也不會大于數組的長度,所以,超過數組長度的citation可以都記在len里 if (citations[i] > len) { arr[len] += 1; } else { //arr的index就是一篇文章中citation的個數,arr的值就是有這么多citation的文章的個數 arr[citations[i]] += 1; } } int count = 0; for (int i = len; i >= 0; i--) { count += arr[i]; if (count >= i) { return i; } } return 0; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64838.html
摘要:排序法復雜度時間空間思路先將數組排序,我們就可以知道對于某個引用數,有多少文獻的引用數大于這個數。代碼排序得到當前的指數數組映射法復雜度時間空間思路也可以不對數組排序,我們額外使用一個大小為的數組。 H-Index I Given an array of citations (each citation is a non-negative integer) of a research...
H-Index 題目鏈接:https://leetcode.com/problems... sort: public class Solution { public int hIndex(int[] citations) { if(citations == null || citations.length == 0) return 0; // sort ...
摘要:重點以上版本參數化都需要借助進行參數化,需嚴格縮進格式,不能用控制縮進,只能用空格控制直接引用列表進行參數化引用文件進行參數化借助輔助函數進行參數化定義項目的文件框架建立四個文件夾,分別用來存放接口用例用例集測試數據編寫接口腳本在文件下, 重點:2.x以上版本參數化都需要借助testsuit...
摘要:安裝執行版本號,例如以下語句可以安裝幾的版本好像在墻內只能找到以前的版本使用可以查看現有的版本,可以支持模糊切換。 一直說要好好學習,總結知識什么的。一直覺得沒有時間。周一終于提交了論文盲審。決定從今天每周都總結一次自己的所學。希望自己能堅持。 任務描述: 一個醫學系的同學要分析一個叫TCGA的數據庫,每個實驗文件是txt,格式如下: hsa-miR-1228* 5.185500...
閱讀 746·2023-04-26 01:30
閱讀 3301·2021-11-24 10:32
閱讀 2180·2021-11-22 14:56
閱讀 1979·2021-11-18 10:07
閱讀 553·2019-08-29 17:14
閱讀 624·2019-08-26 12:21
閱讀 3103·2019-08-26 10:55
閱讀 2940·2019-08-23 18:09