【37】数字在排序数组中出现的次数

来源:互联网 发布:网络视听通则 编辑:程序博客网 时间:2024/05/28 23:12

【37】数字在排序数组中出现的次数

  • 时间限制:1秒
  • 空间限制:32768K
  • 本题知识点: 数组

题目描述

统计一个数字在排序数组中出现的次数。
牛客网题目链接:点击这里

VS2010代码:

#include<iostream>#include<vector>using namespace std;class Solution {public:    int GetNumberOfK(vector<int> data ,int k) {        if(data.empty()) return 0;        if(k<data[0] || k>data[data.size()-1]) return 0;        int times=0;        //设置两个指针,一个从头一个从尾开始查找        int pBegin=0;        int pEnd=data.size()-1;        while(data[pBegin]!=k && pBegin<pEnd)        {  //停止时,要么=k,要么 pBegin=pEnd            pBegin++;        }        while(data[pEnd]!=k && pBegin<pEnd)        {            pEnd--;        }        if(pBegin==pEnd && data[pBegin]!=k) return 0;        else            times=pEnd-pBegin+1;        return times;    }};

思路:

  1. 有序数组,没说是升序还是降序。收尾指针法
  2. 用二分法是不是更快一点呢

    牛客网通过图片:

    这里写图片描述
    这里写图片描述

0 0
原创粉丝点击