未分类随笔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未分类随笔相关的知识,希望对你有一定的参考价值。

H-Index 

https://leetcode.com/problems/h-index/

这个题还是有些绕的,主要是题意搞得有点晕了。最后题意应该是:h 为 h篇文章的引用至少为h,其余N-h篇文章的引用至多为h。(另外一种错误的理解是引用大于h的至少h篇)

方法一:hashtable

新建一个数组来存储每个引用分别有多少篇文章,由于h最多为文章总数len,所以对于那些引用大于文章总数len的,就把这些文章也加载引用为len次的元素位置。然后从这个数组末尾开始遍历。

使用一个tmp来存储文章数目,遍历到cur,首先更新tmp,表示引用大于等于cur的文章共有tmp篇。如果tmp>=cur,则可以返回cur.

技术分享
 1 class Solution(object):
 2     def hIndex(self, citations):
 3         """
 4         :type citations: List[int]
 5         :rtype: int
 6         """
 7         if not citations:
 8             return 0
 9         length = len(citations)
10         articleNum = [0]*(length + 1)
11         for i in range(length):
12             if citations[i] >= length:
13                 articleNum[length] += 1
14             else:
15                 articleNum[citations[i]] += 1
16         tmp = 0
17         for i in range(length, -1, -1):
18             tmp += articleNum[i]
19             if tmp >= i:
20                 return i
21         return 0
View Code

方法二:sort

首先对数组排序,引用次数越多的排在越后边,然后从后边开始遍历。使用tmp表示文章数量,遍历时,如果tmp<citation[i],tmp++,如果tmp==citation[i]表示有m篇引用至少为tmp,返回tmp即可,如果tmp>citations,[0 1 1 5 6 ]返回tmp-1,因为当前位置不行,下一位置可以。

技术分享
 1 class Solution(object):
 2     def hIndex(self, citations):
 3         """
 4         :type citations: List[int]
 5         :rtype: int
 6         """
 7         citations.sort()
 8         length = len(citations)
 9         tmp = 1
10         for i in range(length - 1, -1, -1):
11             if tmp > citations[i]:
12                 return tmp - 1
13             elif citations[i] == tmp:
14                 return tmp
15             else:
16                 tmp += 1
17         return length
18         
View Code

 

以上是关于未分类随笔的主要内容,如果未能解决你的问题,请参考以下文章

感知器代码实现--机器学习随笔2

随笔分类

随笔分类 - [C#6] 新增特性

回收站视图未显示在片段中

博客园已经写好的文章或者随笔如何归类

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”