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

相关推荐

MGlory:我当初有一个老师告诉我简历要写的简单,最好只一面,项目可以写核心的,进面了自然会问你的
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务