//注意数组的实际长度,处理好当n - 1为1,缺少唯一元素的情况
//处理好缺失首元素的特殊情况和尾元素的特殊情况
class Solution {
public:
int getMissingNumber(vector<int>& nums) {
// 处理空数组的情况,即缺失0,直接返回正确结果
if (nums.empty()) return 0;
int l = -1;
int r = nums.size();
while (l + 1 != r) {
int mid = (l + r) >> 1;
// 核心逻辑:比较元素值与下标
if (nums[mid] > mid) {
//当缺失在左半部分或当前位置
r = mid;
} else {
//缺失在右半部分时
l = mid;
}
}
return r;
}
};