zoukankan      html  css  js  c++  java
  • 剑指offer: 38 数字在排序数组中出现的次数

    题目描述

    	统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5} 和数字3,输出4.
    

    思路如下

    1.	预估时间复杂度,最复杂情况是,顺序扫描,统计K出现的次数,时间复杂度是o(n)
    2.	使用类似2分查找,时间复杂度应该是o(logn)。具体代码如下
            
    	class Solution{
    	 public:
     		int getNumberOfK(vector<int> &data, int begin, int end, int k)
    		 {
             int i = begin,j = end,mid = (i + j)>>1;
             if(i > j)return 0;
             if(i == j)return data[mid]==k;
             if(data[mid] == k) return 1 + getNumberOfK(data,begin,mid-1,k) + getNumberOfK(data,mid+1,end,k);
             if(data[mid] < k) return getNumberOfK(data,mid + 1,end,k);
             return getNumberOfK(data,begin,mid - 1,k);
            }
        };
  • 相关阅读:
    数组字典
    字符串创建
    不可变数组
    数组
    纯净控制台
    可变字典
    数组Array
    id NSObject instanceType 区别
    可变字符串 插入,删除,替换,赋值
    查询字符串中某部分的字符串
  • 原文地址:https://www.cnblogs.com/peaceWang/p/5359119.html
Copyright © 2011-2022 走看看