Day 59

第278题:

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。

假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。来源:力扣(LeetCode)

你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。

1、可以直接一次遍历来判断第几个使错误版本,但是超时;

  也可以二分法来判定第几个是错误版本,left=0,right=n,mid=left+(right-left)/2;

  然后依次判断错误版本在左部分还是在右部分,最后得出结果。

  

第268题:

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。(来自LeetCode)

1、利用异或抵消存在的数,最终的就是不存在的数。

  

2、计算所有数的和sum,然后计算1-n的和,减去sum,得出结果。

  

第274题:

给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。

h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数 不超过 h 次。)来源:力扣(LeetCode)

例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。

1、将数组内元素升序排序,那么论文被引用次数越大的就越在后面;

  然后假设数组里面的所有n篇论文各自的被引用次数都>=n,那么H指数=n;

  然后遍历数组,如果第一篇论文的被引用次数小于n说明H质数不能为n,那么就减一变成n-1;

  遍历完数组就得到了最终的H指数。

  

第275题:

和上一题一样,只是给定的数组已经是升序排序的。

1、利用上面的方法也可以得出结果,和上面类似的一种写法也可以。

  

2、二分法查找中间的那个值。

  

 

posted @ 2020-09-02 23:58  Liang-Yi  阅读(89)  评论(0编辑  收藏  举报