题解 | #数字在升序数组中出现的次数#

数字在升序数组中出现的次数

http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

二分法 分别找到第一个大于等于k的元素,和第一个小于等于k的元素
public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if(array.length==0){
            return 0;
        }
       int len=array.length;
       int left=0;
       int right=len-1;
        int mid=0;
       while(left<right){
            mid=left+(right-left)/2;
           if(array[mid]>=k){
               right=mid;
           }else if(array[mid]<k){
               left=mid+1;
           }
        }
        int i=0;
        if(array[left]==k){
             i=left;
        }else{
            return 0;
        }
        
        left=0;
        right=len-1;
        while(left<right){
            mid=left+(right-left+1)/2;
           if(array[mid]<=k){
               left=mid;
           }else if(array[mid]>k){
               right=mid-1;
           }
        }
        int j=0;
        if(array[left]==k){
             j=left;
        }else{
            return 0;
        }
        return j-i+1;
    }
}
全部评论

相关推荐

lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务