题目
https://leetcode-cn.com/problems/search-in-a-sorted-array-of-unknown-size/
二分查找
- 先确定右边界,为了保持对数时间复杂度需要成倍的增加
right
- 再使用二分查找查找目标值
class Solution {
public int search(ArrayReader reader, int target) {
int left = 0, right = 1;
while (reader.get(right) < target) {
right *= 2;
}
while (left <= right) {
int mid = left + (right - left) / 2;
if (reader.get(mid) < target) {
left = mid + 1;
} else if (reader.get(mid) > target) {
right = mid - 1;
} else {
return mid;
}
}
return -1;
}
}