Бинарный поиск по списку в Java - PullRequest
1 голос
/ 15 мая 2019

Я хочу, чтобы моя функция возвращала «YES», если элемент найден в List, и «NO», если он не найден.

Я написал следующий код (бинарный поиск), но некоторые тесты не выполняются.

Однако я написал код для линейного поиска и все тесты прошли.

Я написал эту программу

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 голосов
/ 15 мая 2019

Ваша функция двоичного поиска верна. Может быть, что-то еще делает это неправильно. Убедитесь, что ваш список отсортирован и все числа на входе вписываются в int (long не требуется).

...