Я думаю, умный метод будет следующий.
boolean[] myArray = {false, false, false, false, true, true, false, true, false, false};
// Introduce myArray[0] to your array result.
for (int i = 1; i < myArray.length; i++) {
if (myArray[i-1] || myArray[i]) // Introduce myArray[i] to your array result.
}
Вводите значение, если текущее значение true
, или если последний один (управляемый introduce
переменной) не false
. Первый элемент всегда вводится, потому что wether истинно или ложно, логическая проблема говорит о его внедрении.
Кроме того, я думаю, что это пойдет быстрее, если вы не закоротите myArray[i-1] || myArray[i]
и не допустите myArray[i-1] | myArray[i]
. Быстрее проверить второе значение или операцию, чем сделать , если инструкция на уровне компилятора, чтобы увидеть, является ли первое значение уже истинным.
Общий подход: Проход 1: Извлечь подпоследовательности; Проход 2: построить результат из этих. Итерацию и сохранение начального индекса (начало маркировки ложной подпоследовательности), пока не получится true; добавьте пару (начало, конец) в некоторый список. Новый ввод-индекс введен, если наблюдается новое ложное значение. После этого вы получили список пар (стартового). Заполните новый массив результатов/массив с одним ложным значением для пары; добавьте истины исходного массива, между end_x, start_x_ + 1. Продолжить ... – sascha
@sascha Можете ли вы привести пример, я лучше понимаю пример, чем слова ... – BladeMight