8.8Kпросмотров
6 августа 2025 г.
statsScore: 9.7K
Задача начальника №2 Дан массив чисел
int Arr[MAX_LEN]; и методы
void SetCell(int value, int index);
void GetCell(int index);
void SetAllCells(int value); Которые соответственно
- задает значение ячейки
- получает значение из ячейки
- задает какое-то значение всем ячейкам. И надо сделать эти три метода так, чтобы time complexity был O(1)
То есть не зависело от размера массива. Проблема в третьем методе - если менять в значения в массиве, то это будет О(N) Решение: Следить за тем, когда ячейки были заданы. Если мы вызвали SetCell - меняем значение в ячейке и обновляем версию этой конкретной ячейки на последнюю Когда вызываем SetAllCells - меняем "глобальное" значение и двигаем вверх "глобальную" версию. Если версия в конкретной ячейке более старая, чем глобальная - это значит что SetAllCells был вызван после SetCell и нам надо вернуть глобальное значение. В ином случае - просто смотрим в ячейку. В коде - в комментарии 👇: