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
嗯,就是这样啦,文章到这里就结束啦,真心感谢你花时间来读。
觉得有点收获的话,不妨给我点个赞吧!
如果发现文章有啥漏洞或错误的地方,欢迎私信我或者在评论里提醒一声~