Скажите, у меня есть произвольная последовательность RLE.(Для тех, кто не знает, RLE сжимает массив типа [4 4 4 4 4 6 6 1 1] в [(5,4) (2,6) (2,1)]. Сначала идет числоконкретное целое число в серии, а затем само число.)
Как определить алгоритм для установки значения по заданному индексу без распаковки всего этого?Например, если вы установите (0,1), RLE станет [(1,1) (4,4) (2,6) (2,1)].(В наборе первое значение - это индекс, второе - это значение)
Кроме того, я разделил эту сжатую последовательность на ArrayList of Entries.То есть каждая запись является одной из них: (1,1) где она имеет сумму и значение.
Я пытаюсь найти эффективный способ сделать это, сейчас я могу просто думать о методахкоторые имеют слишком много, если заявления считаются чистыми.Существует так много возможных вариантов: например, если данное значение разделяет существующую запись, или если оно имеет то же значение, что и существующая запись, и т. Д.
Любая помощь будет принята с благодарностью.Сейчас я работаю над алгоритмом, вот некоторые из них:
while(i<rleAL.size() && count != index)
{
indexToStop=0;
while(count<index || indexToStop == rleAL.get(i).getAmount())
{
count++;
indexToStop++;
}
if(count != index)
{
i++;
}
}
Как вы можете видеть, это становится все более небрежным ...
Спасибо!