数字在排序数组中出现的次数 Posted on 2019-08-23 | In 剑指offer | | reads times 数字在排序数组中出现的次数题目描述 统计一个数字在排序数组中出现的次数。 用二分查找找到第一次出现的地方和最后一次出现的地方,两者相减再加1即为出现的次数。 123456789101112131415161718192021222324252627282930313233343536373839404142function GetNumberOfK(data, k){ // write code here if( getBegin(data,k) == -1 && getEnd(data,k) == -1 )return 0; return getEnd(data,k)-getBegin(data,k)+1;}function getBegin(data,k){ let left=0; let right=data.length-1; let mid=right+left>>1; while(left<=right){ if(data[mid]<k){ left=mid+1; }else if(data[mid]>k){ right=mid-1; }else if(data[mid-1]===k&&mid-1>=0){ right=mid-1; }else{ return mid; } mid=right+left>>1 } return -1;}function getEnd(data,k){ let left =0; let right=data.length-1; let mid=right+left>>1; while(left<=right){ if(data[mid]<k){ left=mid+1; }else if(data[mid]>k){ right=mid-1; }else if(data[mid+1]==k&&mid+1<=data.length){ left=mid+1; }else{ return mid; } mid=right+left>>1 } return -1;} Post author: GoldMiner Xun Post link: https://goldminerxun.github.io/2019/08/23/%E5%89%91%E6%8C%87offer%20JavaScript%E7%89%88%20(37)/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.