LeetCode H指數(動態規劃)

2021-09-12 01:22:52 字數 1006 閱讀 8796

給定一位研究者**被引用次數的陣列(被引用次數是非負整數)。編寫乙個方法,計算出研究者的 h 指數。

h 指數的定義: 「h 代表「高引用次數」(high citations),一名科研人員的 h 指數是指他(她)的 (n 篇**中)至多有 h 篇**分別被引用了至少 h 次。(其餘的 n - h 篇**每篇被引用次數不多於 h 次。)」

示例:

輸入: citations = [3,0,6,1,5]

輸出: 3

解釋: 給定陣列表示研究者總共有 5 篇**,每篇**相應的被引用了 3, 0, 6, 1, 5 次。

由於研究者有 3 篇**每篇至少被引用了 3 次,其餘兩篇**每篇被引用不多於 3 次,所以她的 h 指數是 3。

說明: 如果 h 有多種可能的值,h 指數是其中最大的那個。

思路分析:可能大家會被這道題看起來「高大上」的概念所嚇倒,其實這道題一點都不難。

首先我們需要直到,h指數不會大於這些**的總數,因為最多所有的**都被引用無窮次,這些**的h指數也是**數量。

所以,我們定義乙個陣列dp[0,n]表示dp[i]表示被引用超過i次的**數。然後從後往前掃瞄,判斷dp[i] >= i的第乙個就是結果。

(時間複雜度o(n),額外空間複雜度o(n))

class solution 

else

} //因為需要找最大的h值,所以需要從後往前掃瞄

//判斷是否所有的**引用次數都大於等於citationssize次

if (dp[citationssize] >= citationssize)

//然後從後往前開始掃瞄(動態規劃)

動態規劃 什麼是動態規劃?

先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...

mysql動態規劃 動態規劃

動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...

《動態規劃》 ACM 動態規劃例題詳解

描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...