zoukankan      html  css  js  c++  java
  • 数字在排序数组中出现的次数

    题目:统计一个数字在排序数组中出现的次数。例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3由于3在这个数组中出现了4次,因此输出4。

    #include <iostream>
    using namespace std;
    
    int getfirstk(int *a,int k,int low,int high)
    {
        if(low>high)
            return -1;
        int mid=(low+high)/2;
        if(a[mid]==k)
        {
            if((mid>0&&a[mid-1]!=k)||mid==0)
                return mid;
            else
                high=mid-1;
        }
        else if(a[mid]>k)
            high=mid-1;
        else
            low=mid+1;
        return getfirstk(a,k,low,high);
    }
    
    int getlastk(int *a,int k,int low,int high)
    {
        if(low>high)
            return -1;
        int mid=(low+high)/2;
        if(a[mid]==k)
        {
            if((mid!=high&&a[mid+1]>k)||mid==high)
                return mid;
            else
                low=mid+1;
        }
        else if(a[mid]>k)
            high=mid-1;
        else
            low=mid+1;
        return getlastk(a,k,low,high);
    }
    
    int main()
    {
        int a[]={1,2,3,3,3,3,4,5};
        int first,last,x,k;
        cin>>k;
        int low=0,high=sizeof(a)/sizeof(a[0])-1;//high=8-1;
        first=getfirstk(a,k,low,high);
        last=getlastk(a,k,low,high);
        if(first!=-1&&last!=-1)
        {
            x=last-first+1;
            cout<<x;
        }
    }
  • 相关阅读:
    登录认证,全选,反选
    jQuery基础知识
    jQuery
    js练习
    BOM DOM
    mysql视图
    用CrwalSpider爬取boss直聘
    设置piplines.py数据管道
    在middlewares.py文件里添加代理ip
    爬取豆瓣电影
  • 原文地址:https://www.cnblogs.com/home123/p/6791223.html
Copyright © 2011-2022 走看看