Я ищу идею, концепцию или доказанную структуру данных, которая была бы очень эффективной при обращении к коллекции, которая сохраняет кумулятивные значения.
Пример может пролить свет на мою потребность:
У меня есть список значений (2,3,5). Этот список при просмотре кумулятивных значений будет (2,5,10).
Теперь я добавлю 1 в начале списка и получаю (1,2,3,5) и в кумулятивных терминах (1,3,6,11).
Мне нужно только посмотреть на кумулятивные значения, меня совсем не интересует 1,2,3,5. Мне нужно иметь возможность быстро вставлять в позицию, удалять позицию, и все это должно быстро обновлять кумулятивный массив (в идеале без итерации по всему массиву и пересчета значений).
Любые идеи или подсказки?
@Kristo (слишком долго, чтобы добавить комментарий): Чтобы выяснить, почему отрицательные числа делают бессмысленным значение общей суммы, пожалуйста, следуйте этому примеру.
Вставить 1, а затем -1. Сумма составляет 1, чем 0. (1, -1)//(1,0) Вставьте 3, а затем вставьте -3. Сумма равна 3, затем 0. (1,3, -1, -3)//(1,4,3,0) Вставьте 2, а затем вставьте -2. Сумма равна 2, затем 0. (1,3,2, -1, -2, -3)//(1,4,6,5,3,0)
Если мое "магическое число" было 4 общей суммы, я бы не сказал, превысил ли я его.
PS: Основная причина этого - уметь определить, переместил ли я определенное значение и где в цепочке.