π One-stop destination for all your technical interview Preparation π
int binarySearch(vector<int> &a, int key)
{
int l = 0, r = a.size() - 1;
while (l <= r){
int mid = l + (r - l) / 2;
if (a[mid] == key){
return mid;
}
else if (a[mid] < key){
l = mid + 1;
}
else{
r = mid - 1;
}
}
return -1;
}
int binarySearchDes(vector<int> &a, int key)
{
int l = 0, r = a.size() - 1;
while (l <= r){
int mid = l + (r - l) / 2;
if (a[mid] == key){
return mid;
}
else if (a[mid] < key){
r = mid - 1;
}
else{
l = mid + 1;
}
}
return -1;
}
int binarySearchNK(vector<int> &a, int key)
{
bool desc = (a[0] > a[a.size() - 1]); // check
int l = 0, r = a.size() - 1;
while (l <= r){
int mid = l + (r - l) / 2;
if (a[mid] == key){
return mid;
}
else if (a[mid] < key){
(desc == true) ? r = mid - 1: l = mid + 1;
}
else{
(desc == true) ? l = mid + 1 : r = mid - 1;
}
}
return -1;
}