Complete-Preparation

🎉 One-stop destination for all your technical interview Preparation 🎉

View the Project on GitHub

First and last occurrence

First Occurrence

Code

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;
}

Last Occurrence

Code

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;
}

Count the frequency of number

Code

int frequency(vector<int> &a,int num){
    return lastOccurrence(a, num) - firstOccurrence(a, num) + 1;
}