int search(const vector<int> &nums, int key) {
int n = int(nums.size());
int low = 0; // last index with nums[low] < key
int high = n-1; // first index with nums[high] >= key
while (low <= high) {
int mid = low + (high - low) / 2;
if (key == nums[mid]) {
return mid; // found
}
if (key < nums[mid])
high = mid - 1; // search left half
else
low = mid + 1; // search right half
}
return -1; // not found
}
static int search(int[] nums, int key) {
int low = 0;
int high = nums.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (nums[mid] == key) {
return mid; // found
}
if (key < nums[mid]) {
high = mid - 1; // search left half
} else {
low = mid + 1; // search right half
}
}
return -1; // not found
}