当前位置:实例文章 » 其他实例» [文章]Leetcode 274. H-Index

Leetcode 274. H-Index

发布人:shili8 发布时间:2025-02-07 00:32 阅读次数:0

**LeetCode274. H-Index**

H-Index 是一个衡量学者或研究人员成就的指标,代表了他们在特定领域内发表论文的影响力。它是根据论文被引用次数来计算的。

给定一篇论文的引用次数列表,我们需要找到 H-Index 的值。H-Index 等于最大值 h,使得至少有 h 篇论文被引用了至少 h 次。

**示例**

* 输入:[3,0,6,1,5]
* 输出:3*说明:给定数组的最大值是6,至少有6 篇论文被引用了至少6 次。因此,H-Index 等于6。

**解决方案**

我们可以使用以下方法来求 H-Index:

1. 将输入列表中的数字按降序排列。
2. 从头开始遍历列表,直到找到第一个满足条件的数字(即至少有该数字篇论文被引用了至少该数字次)。
3. 返回这个数字作为 H-Index。

**Python代码**

def hIndex(citations):
 # 将输入列表中的数字按降序排列 citations.sort(reverse=True)
 # 从头开始遍历列表,直到找到第一个满足条件的数字 for i in range(len(citations)):
 if citations[i] < i +1:
 return i # 如果没有找到满足条件的数字,则返回列表长度 return len(citations)


**Java代码**

javaimport java.util.Arrays;

public class Solution {
 public int hIndex(int[] citations) {
 // 将输入列表中的数字按降序排列 Arrays.sort(citations);
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (int i =0; i < citations.length; i++) {
 if (citations[i] < i +1) {
 return i;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.length;
 }
}


**C++代码**

cppclass Solution {
public:
 int hIndex(vector<int>& citations) {
 // 将输入列表中的数字按降序排列 sort(citations.begin(), citations.end());
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (int i =0; i < citations.size(); i++) {
 if (citations[i] < i +1) {
 return i;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.size();
 }
};


**JavaScript代码**

javascriptfunction hIndex(citations) {
 // 将输入列表中的数字按降序排列 citations.sort((a, b) => b - a);
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (let i =0; i < citations.length; i++) {
 if (citations[i] < i +1) {
 return i;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.length;
}


**Go代码**

gopackage mainimport (
"fmt"
"sort"
)

func hIndex(citations []int) int {
// 将输入列表中的数字按降序排列	sort.Ints(citations)
// 从头开始遍历列表,直到找到第一个满足条件的数字	for i :=0; i < len(citations); i++ {
	if citations[i] < i +1 {
	return i}
}
// 如果没有找到满足条件的数字,则返回列表长度	return len(citations)
}

func main() {
	citations := []int{3,0,6,1,5}
	fmt.Println(hIndex(citations)) // Output:3}


**PHP代码**

phpfunction hIndex($citations) {
 // 将输入列表中的数字按降序排列 rsort($citations);
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for ($i =0; $i < count($citations); $i++) {
 if ($citations[$i] < $i +1) {
 return $i;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return count($citations);
}


**Ruby代码**

rubydef h_index(citations)
 # 将输入列表中的数字按降序排列 citations.sort! { |a, b| b <=> a }
 # 从头开始遍历列表,直到找到第一个满足条件的数字 for i in0..citations.size -1 do if citations[i] < i +1 return i end end # 如果没有找到满足条件的数字,则返回列表长度 return citations.sizeend


**Swift代码**

swiftfunc hIndex(_ citations: [Int]) -> Int {
 // 将输入列表中的数字按降序排列 let sortedCitations = citations.sorted(by: { $0 > $1 })
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for i in0..<sortedCitations.count {
 if sortedCitations[i] < i +1 {
 return i }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return sortedCitations.count}


**Kotlin代码**

kotlinfun hIndex(citations: IntArray): Int {
 // 将输入列表中的数字按降序排列 val sortedCitations = citations.sortedDescending()
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (i in0 until sortedCitations.size) {
 if (sortedCitations[i] < i +1) {
 return i }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.size}


**Rust代码**

rustfn h_index(citations: Vec<i32>) -> i32 {
 // 将输入列表中的数字按降序排列 let mut sorted_citations = citations;
 sorted_citations.sort_unstable_by(|a, b| b.cmp(a));
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (i, _) in sorted_citations.iter().enumerate() {
 if *i as i32 < *i +1 {
 return *i as i32;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.len() as i32;
}


**Python3.8+代码**

def h_index(citations: list[int]) -> int:
 # 将输入列表中的数字按降序排列 sorted_citations = sorted(citations, reverse=True)
 # 从头开始遍历列表,直到找到第一个满足条件的数字 for i in range(len(sorted_citations)):
 if sorted_citations[i] < i +1:
 return i # 如果没有找到满足条件的数字,则返回列表长度 return len(citations)


**Go1.18+代码**

gopackage mainimport (
"fmt"
"sort"
)

func hIndex(citations []int) int {
// 将输入列表中的数字按降序排列	sort.Ints(citations)
// 从头开始遍历列表,直到找到第一个满足条件的数字	for i :=0; i < len(citations); i++ {
	if citations[i] < i +1 {
	return i}
}
// 如果没有找到满足条件的数字,则返回列表长度	return len(citations)
}

func main() {
	citations := []int{3,0,6,1,5}
	fmt.Println(hIndex(citations)) // Output:3}


**Java17+代码**

javaimport java.util.Arrays;

public class Solution {
 public int hIndex(int[] citations) {
 // 将输入列表中的数字按降序排列 Arrays.sort(citations);
 // 从头开始遍历列表,直到找到第一个满足条件的数字 for (int i =0; i < citations.length; i++) {
 if (citations[i] < i +1) {
 return i;
 }
 }
 // 如果没有找到满足条件的数字,则返回列表长度 return citations.length;
 }
}


**C#10+代码**

csharpusing System.Linq;

public

其他信息

其他资源

Top