Какова пространственная сложность кода:

function double(n) {         //Here n is an array
   newArr = [];
   for (i = 0; i < n.length; i++) {
     newArr.push(2 * n[i]);
   }
  return newArr;
}
0
charan preet 28 Май 2019 в 22:05

2 ответа

Лучший ответ

Поскольку он имеет две переменные newArr и i, от которых зависит пространство этого кода.

Мало того, что есть две переменные с именами newArr и i, есть также n переменные с именами newArr[0], newArr[1], newArr[2], все путь к newArr[n-1]. Сложность пространства относится к тому, как увеличивается объем хранения вашего алгоритма по отношению к количеству входных данных. Поскольку вы помещаете не более n элементов в newArr, сложность пространства равна O(n).

1
0x499602D2 28 Май 2019 в 19:14

Сложность пространства действительно O(N), потому что пространство зависит не от того, сколько переменных ваша программа определила, а от большей части пространства, которое она в конечном итоге займет во время выполнения.


Рассматривайте сложность пространства как фактор стоимости памяти, которую ваша программа будет нести во время выполнения. Если приложение выделяет всю память, которая ему когда-либо понадобится на время выполнения программы, в начале программы, и это количество не зависит от каких-либо переменных в программе, тогда коэффициент просто 1, то есть сложность пространства O(1) - константа, потому что она не меняется.

Это может сбивать с толку, потому что вы можете задаться вопросом, почему ваша простая программа имеет сложность пространства O(N), но случайное приложение C, которое выделяет 1GB памяти в начале, просто O(1). Все сводится к фактору - если пространство зависит от переменной в программе, то пространство является фактором этой переменной, в противном случае пространство является constant .

Не позволяйте этому сбить вас с толку, но и не позволяйте этому обмануть вас, когда кто-то говорит, что определенная программа имеет O(1) сложность пространства, а другая - O(N); O(1) не всегда означает меньше места, и O(N) не обязательно означает больше места. Сложность пространства просто говорит о том, как объем пространства, необходимый программе, зависит от времени выполнения самой программы.

2
smac89 28 Май 2019 в 19:33