У меня есть массив из 288 значений. он содержит единицы и нули в группе в любой комбинации.Найти начальную и конечную точки группы чисел в массиве
например
[0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0.1]
[1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0...]
[1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1....]
он может начинаться и заканчиваться либо группой нуля или группы одного. но гарантируется, что в массиве будет по крайней мере одна группа нулей или единиц. Я заинтересован в сохранении индексов начала и конца группы единиц в массиве. например, 6,16,23 в первом примере в start_index (скажем, это вектор для хранения) и 11,19 в end_index.
Я хочу, чтобы это было общим. так как мой массив может начинаться с любой группы.
Я использую следующий код для реализации этого, но я не увенчался успехом в реализации полной логики. В любом случае, я думаю, что я застрял, как сделать algo. Код ниже - небольшая часть, которую я написал, которая касается только одной возможности.
std::vector<float>start_index
std::vector<float>end_index
float alter_value = array[0];
for (int i = 0; i < array.size(); i++)
{
if (alter_value == 0)
{
if(array[i+1] != alter_value)
{
start_index.push_back(array[i+1]);
alter_value = array[i+1]; // this makes my alter_value = 1
}
}
}
Может быть, я не могу лучше передать то, что хочу. Но, надеюсь, вы понимаете.
Вы упомянули end_index.push_back (i - 1) ;. если это не будет end_index.push_back (i) ;? –
@MT Когда вы выходите из цикла, 'array [i] равен 0', вам нужно записать местоположение последнего' 1', которое является 'i - 1'. – axiom