First Largest Than Neighbors Java

Здравейте,имам проблем със задачата,тъй като когато тествам всичко работи,а в judge ми дава 0/100.Ето кода: https://pastebin.com/yNVQP2rV

Здравей,
условието не е ли числото да е по-голямо от двете му съседни? Защо сравняваш текущото само със следващото - добави и сравнение с предходното :slight_smile:
Мисля, че тези крайните изобщо не ги вземаш предвид като възможен отговор, тъй като те си имат само по 1 съсед.

Пробвай с тези, да кажем:
При примерен вход
3
1 2 3
реално трябва да отпечаташ -1 ,

А при примерен вход
5
1 2 3 2 1
трябва да отпечаташ 2.

Успех :slight_smile:

Мисля ,че логиката е обратната тъй като при този вход то гледа дали предишното е по-голямо от сегашното:тоест -25 > -26 съответно отговор индекс 1.Поне така го разбирам,че трябва числата да са в намаляваща редица за да имаме индекс -1.Примерно 5 4 3 2 1
6
-26 -25 -28 31 2 27

Колегата е дал много точен и адекватен съвет. Само мога да допълня да си инициализираш променливата index със стойност -1. Итерацията да започва от 1, вместо от нула и да завършва както си го направил до предпоследния елемент. В тялото на цикъла сложи само една проверка дали числото на индекс i е по-голямо от числото на индекс i-1 и (&&) дали числото на индекс i е по-голямо от това на индекс i+1, ако е така, индекса да приеме стойността на i, след това break. Така цикъла ще завърши при първото срещнато съвпадение. Ако това никога не се случи, цикъла ще се извърти без да влезе в тялото на проверката и индекса ще си остане -1, без да се налага да правиш други проверки. Например така:

int index = -1;
for (int i = 1; i < result.size() - 1; i++) {
    if (result.get(i - 1) < result.get(i) && result.get(i) > result.get(i + 1)) {
        index = i;
        break;
    }
}
2 Likes

Благодаря ти!