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

    题目描述

    统计一个数字在排序数组中出现的次数。
    解题思路:
    思路一:
    正常遍历数组,找到k第一个出现的位置,然后累加直到不是k。实现简单。
    思路二:
    有序数组,考虑使用二分查找,查找第一k的位置和最后一个k的位置,距离即为次数。
    //思路一
    
    class Solution {
    public:
        int GetNumberOfK(vector<int> data ,int k) {
            int vnum = 0;
            int i=0;
            for(; i < data.size(); i++){
                if(data[i] == k){
                    break;
                }
            }
            while(i < data.size()){
                if(data[i] == k){
                    vnum++;
                }else{
                    break;
                }
                i++;
            }
            return vnum;
        }
    };
    
    
    
    //思路二
    class Solution {
    public:
        int binSearh(vector<int> vct, double k){
         //查找第一个大于k的值的位置 int st = 0; int en = vct.size()-1; while(st <= en){ int mid = (st+en)/2; if(vct[mid] < k){ st = mid+1; }else if(vct[mid] > k){ en = mid-1; } } return st; } int GetNumberOfK(vector<int> data ,int k) { return binSearh(data, k+0.5) - binSearh(data, k-0.5); } };

      

  • 相关阅读:
    Next Permutation
    SpringMVC配置信息
    Servlet详解(转载)
    Length of Last Word
    Maximum Subarray**
    Divide Two Integers
    Generate Parentheses***
    http解码-2
    编码-1
    扫描工具对比
  • 原文地址:https://www.cnblogs.com/chengsheng/p/10679982.html
Copyright © 2011-2022 走看看