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

相关推荐

白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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