剑指offer面试题之数字在排序数组中的出现次数

来源:互联网 发布:狄山 知乎 编辑:程序博客网 时间:2024/04/28 07:26

1.题目:

统计一个数字在排序数组中出现的次数。

2,考虑:

(1),遍历一遍,o(n)

(2),二分查找,最坏也是o(n)

(3),定义头尾两个指针,时间复杂度最坏也是o(n)。但一半情况下是n-count,count是出现次数。

3,在牛客网上的编码:

class Solution {public:    int GetNumberOfK(vector<int> data ,int k) {        /*if (data.empty())        {            return 0;        }                int count = 0;        unsigned int i;        for (i = 0; i < data.size();)        {            if (data[i] != k)                i++;            else                count++;        }        return count;*/        /*if (data.empty())        {            return 0;        }        int count = 0;        unsigned int i;        int j = data.size();        int mid;        int s = 0;        for (i = 0; i < j;)        {            mid = (i+j)/2;            if (data[mid] == k)            {                for (s = mid; s < j; s++)                {                    if (data[s] == k)                    {                        count++;                    }                    else                        break;                }                for (s = mid - 1; s >= 0; s--)                {                    if (data[s] = k)                    {                        count++;                    }                    else                        break;                }            }            else if (data[mid] < k)            {                i = mid + 1;            }            else                j = mid - 1;        }*/        if (data.empty())        {            return 0;        }        int i = 0;        int m = data.size();        int j = m - 1;        for (i; i < m;)        {            if (data[i] != k)            {                i++;            }            else                break;        }        for (j; j >= 0;)        {            if (data[j] != k)                j--;            else                break;        }        if (i > j)//这里必须有个判断,因为可能数组中不存在k值得数        {            return 0;        }        int count = j - i + 1;        return count;    }};


1 0
原创粉丝点击