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

来源:互联网 发布:python scope visiual 编辑:程序博客网 时间:2024/06/04 19:36

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

    由于是排序数组,考虑二分查找的思想。时间复杂度O(lgn).

    代码如下:

     

class Solution {public:    int GetNumberOfK(vector<int> data ,int k) {        return GetNumberOfK(data,0,data.size()-1,k);    }    int GetNumberOfK(vector<int>& data,int left,int right,int k)    {        if(left>right)            return 0;        if(left==right)        {               if(data[left]==k)                return 1;            else                 return 0;        }        int mid=(right+left)/2;        if(data[mid]<k)            return GetNumberOfK(data,mid+1,right,k);        else if(data[mid]>k)            return GetNumberOfK(data,left,mid,k);        else            return GetNumberOfK(data,left,mid-1,k)+GetNumberOfK(data,mid+1,right,k)+1;            }};

0 0