2013-10-07 3 views
2

У меня есть проблема с моей домашней работой, чтобы отменить слова в строке C++, вместо этого, только с O (1) дополнительной памятью. Я смущен тем, что это означает O (1) дополнительную память. Я понимаю, что вообще означает O (1), где независимо от того, насколько велик вход, время для вычисления будет постоянным, поэтому я предполагаю, что я должен добавить только одну часть памяти, которая будет отслеживать слова в обратном порядке. Какие-либо предложения?Сложность времени при обращении строки C++

+4

Это означает постоянное количество дополнительной памяти - количество дополнительной необходимой памяти не зависит от длины строки, длины слова, количества слов и т. Д. –

+0

, так это значит, что мне нужна постоянная часть памяти который должен выводить каждое слово в обратном порядке и переходить к следующему слову? Я играю, как я могу это сделать –

+0

Что вы имеете в виду, обращая вспять слова? «привет мир», «мир привет», или «dlrow olleh»? – jfly

ответ

2

O (1) дополнительная память означает «использование не более постоянной дополнительной памяти». Например, вы не смогли сохранить копию строки, так как это заняло бы пространство O (n), но вы могли бы сохранить любое постоянное число дополнительных int s, char s и т. Д.

В более общем плане - заявления типа «O (1)» или «O (n)» необязательно относятся к времени выполнения. Обозначение Big-O - это способ описания функций. Алгоритм не может быть O (n), но его время выполнения может быть O (n). Использование пространства алгоритмов аналогично может быть O (1), O (n), O (2 n) и т. Д.

Надеюсь, это поможет!

+0

Не совсем правильно. Копия моего комментария к запросу: O (1) означает m Zong

+0

@ ZongZhengLi- Да, это правильно. Позвольте мне обновить это ... – templatetypedef

+0

, поэтому мне будет разрешено хранить любую амуницию ints или символов, но пока я не создаю часть памяти, которая зависит от длины, делая ее O (N), тогда это удовлетворяет ограничению памяти –

Смежные вопросы