★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-ofzqmotc-kz.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
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.git
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."github
Example:數組
Input: Output: 3 Explanation: means the researcher has papers in total and each of them had received citations respectively. Since the researcher has papers with at least citations each and the remaining two with no more than citations each, her h-index is .citations = [3,0,6,1,5][3,0,6,1,5]53, 0, 6, 1, 53333
Note: If there are several possible values for h, the maximum one is taken as the h-index.微信
給定一位研究者論文被引用次數的數組(被引用次數是非負整數)。編寫一個方法,計算出研究者的 h 指數。ide
h 指數的定義: 「h 表明「高引用次數」(high citations),一名科研人員的 h 指數是指他(她)的 (N 篇論文中)至多有 h 篇論文分別被引用了至少 h 次。(其他的 N - h 篇論文每篇被引用次數很少於 h 次。)」spa
示例:code
輸入: 輸出: 3 解釋: 給定數組表示研究者總共有 篇論文,每篇論文相應的被引用了 次。 因爲研究者有 篇論文每篇至少被引用了 次,其他兩篇論文每篇被引用很少於 次,因此她的 h 指數是 。citations = [3,0,6,1,5]53, 0, 6, 1, 53333
24ms
1 class Solution { 2 func hIndex(_ citations: [Int]) -> Int { 3 let arr = citations.sorted { (num1, num2) -> Bool in 4 return num1 < num2 5 } 6 for i in 0 ..< arr.count { 7 if arr[i] >= arr.count - i { 8 return arr.count - i 9 } 10 } 11 12 return 0 13 } 14 }
28mshtm
1 class Solution { 2 func hIndex(_ citations: [Int]) -> Int { 3 if citations.isEmpty { 4 return 0 5 } 6 let n = citations.count 7 var res = Array(repeating: 0, count: n + 1) 8 9 for i in citations { 10 if i > n{ 11 res[n] += 1 12 }else { 13 res[i] += 1 14 } 15 } 16 17 for i in stride(from: n, to: 0, by: -1) { 18 if res[i] >= i { 19 return i 20 } 21 res[i-1] += res[i] 22 } 23 24 25 return 0 26 } 27 }
28msblog
1 class Solution { 2 func hIndex(_ citations: [Int]) -> Int { 3 if citations.isEmpty { 4 return 0 5 } 6 let n = citations.count 7 var res = Array(repeating: 0, count: n + 1) 8 9 for i in citations { 10 if i > n{ 11 res[n] += 1 12 }else { 13 res[i] += 1 14 } 15 } 16 17 for i in stride(from: n, to: 0, by: -1) { 18 if res[i] >= i { 19 return i 20 } 21 res[i-1] += res[i] 22 } 23 24 25 return 0 26 } 27 }
36ms
1 class Solution { 2 func hIndex(_ citations: [Int]) -> Int { 3 let n = citations.count 4 if (n == 0) {return 0} 5 var array = Array(repeating:0,count:n + 1) 6 for i in 0..<n { 7 if(citations[i] > n) { //全部比n大的都算一塊兒,由於已經不多是這個了,只計算有幾篇 8 array[n] += 1 9 } 10 else 11 { 12 array[citations[i]] += 1 //對應的次數+1 13 } 14 } 15 var t = 0 16 for i in (0...n).reversed() { 17 t = t + array[i] //累加次數 18 if(t >= i) { 19 return i 20 } 21 } 22 return 0 23 } 24 }
40ms
1 class Solution { 2 func hIndex(_ citations: [Int]) -> Int { 3 guard citations.count > 0 else { 4 return 0 5 } 6 let res = citations.sorted() 7 for (index,value) in res.enumerated() { 8 if value >= (res.count - index){ 9 return res.count - index 10 } 11 } 12 return 0 13 } 14 }