原题
https://leetcode.cn/problems/h-index/description
题解
核心是求数组中,大于等于h的数的个数 大于等于 h,个数的最大值。
核心思想是先排序再后向遍历。
解法一:
func hIndex(citations []int) int {
sort.Ints(citations)
count := 1
for count <= len(citations) {
if citations[len(citations)-count] < count {
break
}
count++
}
return count - 1
}
解法二:计数排序 (和排序的原理一样,借助了数组下标用空间换排序的时间)
func hIndex(citations []int) int {
length := len(citations)
cnt := make([]int, length+1)
for _, item := range citations {
index := min(item, length)
cnt[index] += 1
}
total := 0
for i := len(cnt) - 1; i >= 0; i-- {
total += cnt[i]
if total >= i {
return i
}
}
return -1
}
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode274-h%e6%8c%87%e6%95%b0/