面试题38—数字在排序数组中出现的次数

来源:互联网 发布:靠谱泰国代购淘宝 知乎 编辑:程序博客网 时间:2024/05/21 08:03

代码示例:

#include<iostream>using namespace std;int First_k(int a[], int s, int t,int k){    if (a == NULL || (s > t))        return -1;    int mid = (s + t) / 2;    if (a[mid] < k)    {        return First_k(a, mid+1, t, k);    }    else if (a[mid] > k)    {        return First_k(a, s, mid - 1, k);    }    else    {        if (a[mid - 1] != k)            return mid;        else        {            return First_k(a, s, mid - 1, k);        }    }}int Last_k(int a[], int s, int t, int k){    if (a == NULL || (s > t))        return -1;    int mid = (s + t) / 2;    if (a[mid] < k)    {        return Last_k(a, mid + 1, t, k);    }    else if (a[mid] > k)    {        return Last_k(a, s, mid - 1, k);    }    else    {        if (a[mid + 1] != k)            return mid;        else        {            return Last_k(a, mid+1, t, k);        }    }}int main(){    const int n = 10;    int a[n] = { 3 };    int begin = 0;    int end = n - 1;    int k = 0;    int index1 = First_k(a, begin, end, k);    int index2 = Last_k(a, begin, end, k);    if (index1 != -1 && index2 != -1)    {        cout << k << "出现次数:" << index2 - index1 + 1 << endl;    }    else    {        cout << k << "没有出现!" << endl;    }}
阅读全文
0 0
原创粉丝点击