Какова пространственная сложность этой программы-палиндрома?Javascript

Форум по Javascript
Ответить
Anonymous
 Какова пространственная сложность этой программы-палиндрома?

Сообщение Anonymous »

В курсе Scrimba «Структуры данных и алгоритмы», на уроке «Задача: палиндром», учитель проанализировал пространственную сложность следующей программы как O(n * k) (чтобы было понятно, это решение учителя, а не мое. Я знаю, что есть лучший способ сделать это):

Код: Выделить всё

export function findAllPalindromes(usernames) {
  const result = []

  for (const username of usernames) {
    if (isPalindrome(username)) {
      result.push(username)
    }
  }

  return result
}

function isPalindrome(username) {

  const reversed = reverse(username)
  const result = username.toLowerCase() === reversed.toLowerCase()
  return result

}

function reverse(string) {
  const characters = string.split("")
  let left = 0
  let right = characters.length - 1
  while (left < right) {
    const temp = characters[left]
    characters[left] = characters[right]
    characters[right] = temp
    left++
    right--
  }
  const reversed = characters.join("")
  return reversed
}

Насколько я понимаю, под n учитель имел в виду общее количество элементов во входном массиве, что соответствует количеству итераций в цикле for, а под k учитель имел в виду размер в байтах каждой отдельно рассматриваемой строки в обратной функции.
Поскольку перевернутые имена пользователей не накапливаются в оперативной памяти и используются только промежуточно, не будет ли вместо этого пространственная сложность равна O(n)? И если в конце концов это O(n * k), то простое копирование элементов из входного массива в новый массив и его возврат тоже дают вам пространственную сложность O(n * k)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... me-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»