Какова пространственная сложность кода:
function double(n) { //Here n is an array
newArr = [];
for (i = 0; i < n.length; i++) {
newArr.push(2 * n[i]);
}
return newArr;
}
2 ответа
Поскольку он имеет две переменные
newArr
иi
, от которых зависит пространство этого кода.
Мало того, что есть две переменные с именами newArr
и i
, есть также n
переменные с именами newArr[0]
, newArr[1]
, newArr[2]
, все путь к newArr[n-1]
. Сложность пространства относится к тому, как увеличивается объем хранения вашего алгоритма по отношению к количеству входных данных. Поскольку вы помещаете не более n
элементов в newArr
, сложность пространства равна O(n)
.
Сложность пространства действительно O(N)
, потому что пространство зависит не от того, сколько переменных ваша программа определила, а от большей части пространства, которое она в конечном итоге займет во время выполнения.
Рассматривайте сложность пространства как фактор стоимости памяти, которую ваша программа будет нести во время выполнения. Если приложение выделяет всю память, которая ему когда-либо понадобится на время выполнения программы, в начале программы, и это количество не зависит от каких-либо переменных в программе, тогда коэффициент просто 1
, то есть сложность пространства O(1)
- константа, потому что она не меняется.
Это может сбивать с толку, потому что вы можете задаться вопросом, почему ваша простая программа имеет сложность пространства O(N)
, но случайное приложение C, которое выделяет 1GB
памяти в начале, просто O(1)
. Все сводится к фактору - если пространство зависит от переменной в программе, то пространство является фактором этой переменной, в противном случае пространство является constant .
Не позволяйте этому сбить вас с толку, но и не позволяйте этому обмануть вас, когда кто-то говорит, что определенная программа имеет O(1)
сложность пространства, а другая - O(N)
; O(1)
не всегда означает меньше места, и O(N)
не обязательно означает больше места. Сложность пространства просто говорит о том, как объем пространства, необходимый программе, зависит от времени выполнения самой программы.
Похожие вопросы
Новые вопросы
data-structures
Структура данных - это способ организации данных таким образом, который позволяет эффективно запрашивать и / или обновлять конкретные свойства этих данных.