Для назначения я должен был написать алгоритм, который позволял бы мне использовать не более n + O (log (n)) дополнительных битов памяти (подробности о том, что алгоритм фактически должен был делать, не важныздесь), где n - размер входного массива.
Я представил алгоритм, который проходит все тестовые случаи;однако мой грейдер говорит, что я использую более n + O (log (n)) битов памяти. Их причина в том, что, как часть моего алгоритма, я добавляю количество (n * i) к каждому элементу в массиве (где i = 1, 2, 3, ... n. I - переменная индекса впетля). Они говорят, что при очень больших значениях n я буду использовать больше памяти для хранения больших чисел.
Это приводит меня к следующему вопросу: правда ли, что моя сложность пространства превышает n + O (log(n)) биты, добавляя n * i к каждому числу? Мой опыт анализа алгоритмов довольно ограничен, но я лично никогда не видел, чтобы хранение больших чисел оправдывало увеличение сложности пространства. Но давайте скажем для аргумента, что это увеличивает сложность - я буду использовать больше, чем n + O (log (n)) бит?
Я хотел бы сформулировать аргумент для вызова, но я просто хочу убедиться, что я прав, прежде чем сделать это.