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

    /**
     * 面试题38:数字在排序数组中出现的次数
     * 统计一个数字在排序数组中出现的次数。
     */
    public class _38_sort_num_times {
        public static void main(String[] args){
            Solution38 solution38 = new Solution38();
            int[] a={1,2,3,3,3,3,4,5};
            int result=solution38.GetNumberOfK(a,3);
            System.out.println(result);
        }
    }
    class Solution38 {
        public int GetNumberOfK(int [] array , int k) {
            if(array.length==0){
                return 0;
            }
            int head=getHeadIndex(array,k,0,array.length-1);
            int tail=getTailIndex(array,k,0,array.length-1);
            if(head>-1&&tail>-1){
                return tail-head+1;
            }
            return 0;
        }
        public int getHeadIndex(int [] array , int k,int start,int end){
            if(start>end){
                return -1;
            }
            int midIndex=(start+end)/2;
            int midData=array[midIndex];
            if(midData==k){
                if((midIndex>0&&array[midIndex-1]!=k)||midIndex==0){
                    return midIndex;
                }else{
                    end=midIndex-1;
                }
            }else if(midData>k){
                end=midIndex-1;
            }else {
                start=midIndex+1;
            }
            return getHeadIndex(array,k,start,end);
        }
        public int getTailIndex(int [] array , int k,int start,int end){
            if(start>end){
                return -1;
            }
            int midIndex=(start+end)/2;
            int midData=array[midIndex];
            if(midData==k){
                if((midIndex<array.length-1&&array[midIndex+1]!=k)||midIndex==array.length-1){
                    return midIndex;
                }else{
                    start=midIndex+1;
                }
            }else if(midData<k){
                start=midIndex+1;
            }else {
                end=midIndex-1;
            }
            return getTailIndex(array,k,start,end);
        }
    }
    
  • 相关阅读:
    L3-1 二叉搜索树的结构 (30 分)
    L3-2 森森快递 (30 分)(贪心+线段树/分块)
    三分(凸函数)
    (三分入门)(凹函数)
    Print Article(斜率DP入门+单调队列)
    PTA 逆散列问题 (30 分)(贪心)
    二叉树遍历相关
    7-5 堆中的路径 (25 分)
    Grouping ZOJ
    D
  • 原文地址:https://www.cnblogs.com/andy-zhou/p/6549989.html
Copyright © 2011-2022 走看看