1. 题目解析
Leetcode题目链接:LCR 173. 点名
这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。
核心在于找到题目所给的连续数组中缺失的数字即可。
2.算法原理
在这个升序的数组中,我们发现:
- 在第⼀个缺失位置的左边,数组内的元素都是与数组的下标相等的;
- 在第⼀个缺失位置的右边,数组内的元素与数组下标是不相等的。
因此,我们可以利⽤这个特性,来使用二分查找算法。
3.代码编写
class Solution
{
public:int takeAttendance(vector<int>& records) {int n = records.size() - 1;int left = 0, right = n, mid = 0;while(left < right){mid = (left + right)/2;if(records[mid] == mid){left = mid + 1;}else{right = mid;}}if (records[right] == right) {return right+1;}return right;}
};
The Last
嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。
觉得有点收获的话,不妨给我点个赞吧!
如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~