Leetcode 每日一题C 语言版 -- 274 H-index

Leetcode 每日一题C 语言版 -- 274 H-index

日拱一卒,功不唐捐。欢迎诸君评论区打卡同行共勉!!

问题描述

https://leetcode.com/problems/h-index/description/?envType=study-plan-v2\&envId=top-interview-150

复制代码
Given an array of integers citations where citations[i] is the number of citations a researcher received for their ith paper, return the researcher's h-index.

According to the definition of h-index on Wikipedia: The h-index is defined as the maximum value of h such that the given researcher has published at least h papers that have each been cited at least h times.

 

Example 1:

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, their h-index is 3.
Example 2:

Input: citations = [1,3,1]
Output: 1
 

Constraints:

n == citations.length
1 <= n <= 5000
0 <= citations[i] <= 1000

解法一

先排序,引用次数从小到大排序,例如[3, 0, 6, 1, 5]

-> [0, 1, 3, 5, 6], 遍历数组

引用X大于等于0 的有Y个, 5 - 0 = 5个

引用X大于等于1 的有Y个, 5 - 1 = 4个

引用X大于等于3 的有Y个, 5 - 2 = 3个

引用X大于等于5 的有Y个, 5 - 3 = 2个

引用X大于等于6 的有Y个, 5 - 4 = 1个

X>=Y时, Y即为H-index

c 复制代码
#include <stdlib.h>

#define max(x, y) ((x) > (y) ? (x) : (y))

static int compare(const void *a, const void *b)
{
    int __a = *(const int *)a;
    int __b = *(const int *)b;

    return (__a > __b) - (__a < __b);
}

int hIndex(int* citations, int citationsSize) {
    uint32_t i = 0;

    qsort(citations, citationsSize, sizeof(int), compare);
    for (i = 0; i < citationsSize; i++) {
        if (citations[i] >= citationsSize - i)
            return citationsSize - i;
    }

    return 0;
}
相关推荐
嵌入小生0071 分钟前
标准IO---核心函数接口延续(嵌入式Linux)
c语言·vscode·vim·嵌入式·小白·标准io·函数接口
A尘埃1 分钟前
超市购物篮关联分析与货架优化(Apriori算法)
算法
.小墨迹8 分钟前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
不穿格子的程序员18 分钟前
从零开始刷算法——贪心篇1:跳跃游戏1 + 跳跃游戏2
算法·游戏·贪心
大江东去浪淘尽千古风流人物21 分钟前
【SLAM新范式】几何主导=》几何+学习+语义+高效表示的融合
深度学习·算法·slam
铉铉这波能秀29 分钟前
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
数据结构·leetcode·list
重生之我是Java开发战士35 分钟前
【优选算法】模拟算法:替换所有的问号,提莫攻击,N字形变换,外观数列,数青蛙
算法
仟濹40 分钟前
算法打卡 day1 (2026-02-06 周四) | 算法: DFS | 1_卡码网98 可达路径 | 2_力扣797_所有可能的路径
算法·leetcode·深度优先
yang)41 分钟前
欠采样时的相位倒置问题
算法
历程里程碑1 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法