当前位置: 首页 > news >正文

二分算法8️⃣-0~n-1 中缺失的数字(easy)

题目链接:LCR 173. 点名

某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席,请返回他的学号。

示例 1:

输入: records = [0,1,2,3,5]
输出: 4

示例 2:

输入: records = [0, 1, 2, 3, 4, 5, 6, 8]
输出: 7

提示:

1 <= records.length <= 10000

解法(二分查找算法):

算法思路:

关于这道题中,时间复杂度O(N) 的解法有很多种,而且也是比较好想的,这里就不再赘述。本题只讲解一个最优的二分法,来解决这个问题。

在这个升序的数组中,我们发现:

▪ 在第一个缺失位置的左边,数组内的元素都是与数组的下标相等的;

▪ 在第一个缺失位置的右边,数组内的元素与数组下标是不相等的。

因此,我们可以利用这个「二段性」,来使用「二分查找」算法。

class Solution {
public:int takeAttendance(vector<int>& records) {int left = 0,right = records.size();while(left < right){int mid = left + (right - left)/2;if(records[mid] == mid) left = mid + 1;else right = mid;}return left;}
};


http://www.mrgr.cn/news/11518.html

相关文章:

  • uni-cli 编译和打包并自动打开微信开发者工具
  • 谷歌地图-地理编码,根据地址文本获取经纬度并计算距离
  • redis单线程 ,当redis在执行lua脚本的时候,会执行其他redis操作吗?
  • Android 退出app方式(回忆录)
  • Android高级UI --- canvas
  • Apache Dolphinscheduler Standalone 部署教程
  • Uniapp使用InnerAudioContext返回内部 audio 上下文 ,获取不到duration当前音频的长度,如何解决?
  • 【Python机器学习】NLP分词——利用分词器构建词汇表(二)——点积
  • 如何解决错误Given calling package android does not match caller‘s uid-学员提问
  • Qt QCustomPlot画色阶图
  • 牛津大学发布首篇《Transformer多模态学习》综述论文,23页pdf涵盖310篇文献全面阐述MMT的理论与应用
  • 2.初识springcloud
  • 一个干净的python项目(没连数据库啥的)
  • ptrade排坑日记——交易策略报错: ‘NoneType‘ object is not subscriptable 。
  • 百日筑基第六十天-学习一下Tomcat
  • unity的 Assembly definitions- asmdef文件
  • Python网络编程:Web框架基础(Flask/Django)
  • LabVIEW软件反编译
  • Postman接口自动化测试:从入门到实践!
  • Java-BatchProcessingUtil工具类