Здравейте,имам проблем със задачата,тъй като когато тествам всичко работи,а в judge ми дава 0/100.Ето кода: https://pastebin.com/yNVQP2rV
Здравей,
условието не е ли числото да е по-голямо от двете му съседни? Защо сравняваш текущото само със следващото - добави и сравнение с предходното
Мисля, че тези крайните изобщо не ги вземаш предвид като възможен отговор, тъй като те си имат само по 1 съсед.
Пробвай с тези, да кажем:
При примерен вход
3
1 2 3
реално трябва да отпечаташ -1 ,
А при примерен вход
5
1 2 3 2 1
трябва да отпечаташ 2.
Успех
Мисля ,че логиката е обратната тъй като при този вход то гледа дали предишното е по-голямо от сегашното:тоест -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;
}
}
Благодаря ти!