剑指offer38题,本地编译可以通过,牛客网不通过,求解

原题是这样的
我的代码是这样的
package Test31_66;

public class Test38 {
    /**
     * 统计一个数字在排序数组中出现的次数
     * @param array
     * @param k
     * @return
     */
    public static int GetNumberOfK(int [] array , int k) {
           int index=doubleFind(array,k,0,array.length-1);
           int index2=index;
           int count=0;
           while(index<=array.length-1&&array[index]==k) {
               count++;
               index++;
           }
           while(index2>=0&&array[index2]==k) {
               count++;
               index2--;
           }
           return count-1;
    }
    /**
     * 二分查找k的位置
     * @param array
     * @param k
     * @param s
     * @param e
     * @return
     */
    private static int doubleFind(int[] array, int k,int s,int e) {
        int mid=(s+e)/2;
        if(array[mid]==k) {
            return mid;
        }
        if(array[mid]<k) {
            return doubleFind(array, k, mid+1, e);
        }else if(array[mid]>k){
            return doubleFind(array, k, s, mid-1);
        }
        return -1;
    }
    public static void main(String[] args) {
        int a[]= {1,2,3,4,5,6,7,8,8,8,8,8,9};
        //System.out.println(doubleFind(a, 2, 0, 5));
        System.out.println(GetNumberOfK(a, 8));
    }
    
} 
在eclipse上可以通过
但是在牛客网竟然编译错误,如下图

所以是哪里出现错误了呢?有没有大佬帮忙解答一下
全部评论
递归退出条件没定义全面。
点赞 回复 分享
发布于 2020-07-31 12:28
我也是找不到答案,就开始刷剑指offer了
点赞 回复 分享
发布于 2020-07-31 11:33
2楼正解
点赞 回复 分享
发布于 2018-07-31 21:27
也没有死循环,就是递归判断的时候,缺少了二分查找没有找到该值的情况。所以会出现s大于e的情况,直到数组越界
点赞 回复 分享
发布于 2018-07-31 18:21
额,敢问大佬如果二分查找找不到的话它会return -1?我咋觉得是个死循环呢
点赞 回复 分享
发布于 2018-07-31 15:34

相关推荐

06-07 00:00
已编辑
腾讯_后端开发
点赞 评论 收藏
分享
华子别追了,我害怕了,每天手机提示音一响我就知道你又来了
徐凤年555:直接屏蔽了就行,真的太离谱了,感觉一万个hr
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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