Существует массив целых чисел, скажем 3,5,7,9. Вы должны создать другой массив и заполнить его таким образом, чтобы вторая позиция 0-го массива была произведением всех чисел из первого массива, исключая число на его 0-й позиции, то есть оно должно быть 5x7x9 (исключая 3), число в индексе 1 второго массива будет произведение 3x7x9 (исключая 5).
Первый ответ, который пришел мне на ум, состоял из 2 циклов, которые приведут к временной сложности O (n2). Позже я понял это:
Умножая все числа в первом массиве (3x5x7x9), и при заполнении второго массива я делю этот продукт на число в этой позиции. разделите на 3, если я заполняю 0-ю позицию, разделите на 5, если я заполняю 1-ю позицию и так далее. Это снизит сложность от O (n2) до, вероятно, O (2n).
Но интервьюер говорит, что разделение не допускается. Я не мог думать ни о чем другом, кроме как хранить различные возможные кратные в какой-то структуре данных и использовать их во время заполнения. Я сдался, но когда его попросили ответить, он сказал, что будет поддерживать 2 массива переднего и заднего кратного. Когда его спросили о проблеме сложности пространства для решения, он сказал, что его можно оптимизировать.