面试题 08.03
Solutions
if we meet nums[mid] < mid, the magic number may be in both sides
x x 3 4 x x x index if there are no duplicates, all indexes <= 4 are not possible
3 3 nums
x x x 4 5 x x index
3 5 numsclass Solution {
public:
int findMagicIndex(vector<int>& nums) {
int lo = 0, hi = nums.size();
while (lo < hi) {
int mid = lo + ((hi - lo) >> 1);
if (nums[mid] < mid)
lo = mid + 1;
else
hi = mid;
}
return lo < nums.size() && nums[lo] == lo ? lo : -1;
}
};Last updated