🎉 One-stop destination for all your technical interview Preparation 🎉
int firstOccurrence(vector<int> &a,int num){
int l = 0, r = a.size() - 1;
int res = -1;
while (l <= r){
int mid = l + (r - l) / 2;
if(a[mid] == num){
res = mid; // store result
r = mid - 1; // right = mid - 1
}else if(num<a[mid]){
r = mid - 1;
}else{
l = mid + 1;
}
}
return res;
}
int lastOccurrence(vector<int> &a,int num){
int l = 0, r = a.size() - 1;
int res = -1;
while (l <= r){
int mid = l + (r - l) / 2;
if(a[mid] == num){
res = mid; // store result
l = mid + 1; // left = mid + 1
}else if(num<a[mid]){
r = mid - 1;
}else{
l = mid + 1;
}
}
return res;
}
int frequency(vector<int> &a,int num){
return lastOccurrence(a, num) - firstOccurrence(a, num) + 1;
}