剑指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

相关推荐

点赞 评论 收藏
分享
03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务