274.h index

Source code notebook

using Base.Iterators: eachindex
using OffsetArrays: Iterators

title: 274. H-Index id: problem274 author: Indigo date: 2021-06-05 difficulty: Medium categories: Hash Table, Sort link: https://leetcode.com/problems/h-index/description/ hidden: true –-

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."

Example:

Input: citations = [3,0,6,1,5]
Output: 3
Explanation:[3,0,6,1,5] 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, her h-index is 3.

**Note: **If there are several possible values for h , the maximum one is taken as the h-index.

# @lc code=start
using LeetCode

using OffsetArrays
function h_index(citations::Vector{Int})::Int
    len = length(citations)
    cnt = OffsetArray(fill(0, len + 1), -1)
    for c in citations
        cnt[min(c, len)] += 1
    end
    c = 0
    for i in Iterators.reverse(eachindex(cnt))
        c += cnt[i]
        c == i && return i
    end
end
# @lc code=end

This page was generated using DemoCards.jl and Literate.jl.