Линейное определение нахождения последнего индекса цели в массиве

64
5

Напишите метод, который, когда передан массив целых чисел arr и целая цель, возвращает последний индекс, в котором происходит мишень в массиве. Верните -1, если массив равен NULL или если цель не существует в массиве.

Поэтому я использую линейный поиск для этого.

public static void linearSeach(int [] arr, target){
if( arr == null){
return -1;
}
count = 0;
for (int i = 0; i< arr.length; i++){
if( target == arr[i]){
count ++;
}
}
// I cannot return both count and -1 so here is what I thought I should do
if( count >= 0){
return count;
}
else {
return -1;
}}

Это правильный или правильный подход?

спросил(а) 2020-03-02T17:47:25+03:00 1 год, 6 месяцев назад
1
Решение
64

Нет, вы возвращаете количество раз, когда целевой номер появляется в массиве. Вы должны вернуть индекс последнего показания:

if (arr != null) {
for (int i = arr.length - 1; i >= 0; i--){
if (target == arr[i]) {
return i;
}
}
}
return -1;

ответил(а) 2020-03-02T17:58:40.473167+03:00 1 год, 6 месяцев назад
46

public static void linearSeach(int [] arr, target){
if( arr != null) {
int i = arr.length - 1
while (i>=0){
if( target == arr[i]){
return i;
}
i= i-1
}
}
return -1;
}

ответил(а) 2020-03-02T17:47:25+03:00 1 год, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема