用Java对列表进行二进制搜索

时间:2019-05-15 13:31:44

标签: java list binary-search

如果要在List中找到该元素,并且希望该函数返回“ YES”,我希望我的函数返回“ YES” ”(如果找不到)。

我写了下面的代码(二进制搜索),但是一些测试用例失败了。

但是,我为Linear Search编写了代码,并通过了所有测试用例。

我已经写了这个程序

static String findNumber(List<Integer> arr, int k) {

    int l=0;
    int r= arr.size()-1;
    int flag=0;

    while(l<=r){
        int m = l + (r - l) / 2;
        if(arr.get(m)==k){
            return "YES";
            //flag=1;
        }
        else if(arr.get(m)<k){
            l=m+1;
        }
        else
           r = m-1;                

    }
    // if(flag==1){
    //     return "YES";
    // }

    return "NO";
}

但是相同的代码可用于数组,并且所有测试用例都可以通过。

1 个答案:

答案 0 :(得分:0)

您的二进制搜索功能正确。也许是其他原因导致了错误。确保您的列表已排序,并且输入中的所有数字都适合int(不需要long)。