未分类随笔

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

方法二: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         

时间: 2024-08-04 03:33:25

未分类随笔的相关文章

未分类笔记

由于python的入门门槛比较低,所以这里就记一下python的简单入门: 1.头文件的形式 #!/bin/env python # coding=utf-8 或者  # -*- coding:utf-8 -*- 2.常量和变量的写法 常量一般都用大写: AGE = 56 变量建议的写法: age_of_me = 3 3.注释代码 如果是一行的代码,用#注释 如果是多行的代码,用三引号来注释. 4.python中单引号与双引号,无任何区别. 5. ---未完待续---

ASP.NET基础学习未整理随笔

利用新建网站添加的项目可以改完代码直接刷新就行 提交到服务程序的表单一定要具有name.<input type="hidden"value="true"name="ispostback"/>先是要求服务器读取我的请求,然后再相应提交是将内容发给服务器请求响应然后进行返回值的处理string content=content.request["name"];context.response.write(content)

【LeetCode】未分类(tag里面没有)(共题)

[419]Battleships in a Board (2018年11月25日)(谷歌的题,没分类.) 给了一个二维平面,上面有 X 和 . 两种字符. 一行或者一列连续的 X 代表一个战舰,问图中有多少个战舰.(题目要求one pass, 空间复杂度是常数) 题目说了每两个战舰之间起码有一个 . 作为分隔符,所以不存在正好交叉的情况. 题解:我提交了一个 floodfill 的题解,能过但是显然不满足要求. discuss里面说,我们可以统计战舰的最上方和最左方,从而来统计战舰的个数.(这个

暂未分类的杂题

CF600E dsu on tree P1345 最小割点,拆点连流量为1的边 其余边流量无穷,跑最大流 P2073 set教学 P2617 树套树 P2746 缩点之后把一些树搞成联通的最小代价是入度为0的点和出度为0的点中的较大值 P3119 缩点建反边跑DAG上dp P3376 最大流 P3381 最小费用最大流,dinic上套spfa P3419 优先队列贪心,消除最久未使用的 P1955 并查集 P2759 十进制数的位数为log10(x)+1,加一是为了取整 P1220 区间DP P

1.29号Java复习题目(针对面试示例版尝试(未分类))

1. Java 语言都有哪些特点? 答:Java 语言包含以下特点. 面向对象,程序容易理解.开发简单.方便: 跨平台,可运行在不同服务器类型上,比如:Linux.Windows.Mac 等: 执行性能好,运行效率高: 提供大量的 API 扩展,语言强大: 有多线程支持,增加了响应和实时交互的能力: 安全性好,自带验证机制,确保程序的可靠性和安全性. 2. Java 跨平台实现的原理是什么? 答:要了解 Java 跨平台实现原理之前,必须先要了解 Java 的执行过程,Java 的执行过程如下(

常用未分类命令

pwd    printing working directory显示工作目录 for example echo $pwd echo $oldpwd cd    切换目录 ~切换回家目录 ~username切换到指定用户的家目录 -与上次所在的目录和当前目录之间来回切换. ...把相对路径作为目标 ls列出指定目录下的内容 -a:显示所有文件,包括.和..在内的所有隐藏文件 -A:不包括..在内的所有文件 -l:详细列表模式 drwxr-xr-x.   2 root root   18 2月  

日常记录未分类

XCODE 6的storyboard中view的大小调整 默认是一个正方形.两种方法调整: 1.选中view,右上角选择第一个页面(Show the file inspector),然后取消选择use size classes. 2.选中view,右上角选择倒数第二个页面(Show the Size inspector),然后选择Freeform,就可以设置尺寸了. 修改statusBar的颜色 1.修改plist文件,增加View controller-based status bar app

Struts2_未分类

1. 模块包含 include 1.1写一个login.xml  <package name="default" namespace="/" extends="struts-default">        <action name="helloAdd" class="com.base.action.HelloAction" method="add">      

未分类

数据库 1.按月份等字段分表: 2.排序本来是按时间降序的,改为按id降序: 3.减少表关联查询,在内存中进行逻辑处理,--->场景 4.查询本来是模糊查询,改为下拉框,因为设备名称数量是有限的:--->设备名 设备,逻辑区域,物理区域,场景等表数据的维护前后端代码冗余 增加每个表的配置信息,从controller,service,dao以及前端jsp,js代码写一套,里面的逻辑根据每个表的配置信息执行: 数据库性能优化主要一下几个方面: 1.sql语句的执行计划是否正常 2.减少应用和数据库