Мне дан вектор, который содержит двоичное значение. Мне нужно найти самую длинную последовательную серию из 1 во всем векторе. Это тип логики c Я не могу решить. Я могу решить большинство случаев, но не все, что означает, что мой алгоритм неисправен. Мы можем даже изменить порядок вопросов на ЛЮБОЙ тип последовательного значения в любом массиве. Я пробовал подсчитать количество голов и хвостов и до сих пор не могу решить 10/10 случаев.
Я думаю, что алгоритм дает неверный ответ, когда полоса начинается в более поздней части вектора, а не в самой большой streak, начинающийся с первого элемента.
Вот мой алгоритм для задачи запроса полос на основе двоичных значений. Также я понимаю, что значения двух итераторов не самые эффективные, но я хочу упростить мой ответ в моих терминах.
ОБРАЗЕЦ ВХОДА: [1,1,0]
ВЫБОР ВЫБОРА: 2
ОБРАЗЕЦ ВХОДА 2: [1,1,0,0,0,1,1,1]
ВЫБОР ВЫБОРА 2: 3
void getMaxStreaks(vector<int> arr) {
int largest_streak{0};
int streak_counter{0};
for(int i = 0; i <= arr.size() - 1; i++){
if(arr[i] == 1){
streak_counter = 1;
}
for(int j = i + 1; j <= arr.size() -1; j++){
if(arr[i] == 1 && arr[j] == 1){
streak_counter++;
}
else if(arr[i] == 1 && arr[j] == 0){
if(streak_counter > largest_streak){
largest_streak = streak_counter;
streak_counter = 0;
}
}
}
if(streak_counter > largest_streak){
largest_streak = streak_counter;
streak_counter = 0;
}
}