Если , вы можете предположить, что каждый f
равен O(1)
, тогда при совершении не более 1.000.000 вызовов к ним по-прежнему сохраняется постоянная верхняя граница . Таким образом, я полагаю, что ваш набросанный подход O(1)
, если вы ограничите его до 1.000.000 вызовов.
Редактировать
Поскольку я получил несколько отрицательных отзывов по этому поводу, я попытаюсь прояснить причину. Учитывая имеющуюся информацию, нет более быстрого способа решить эту проблему, чем оценить все f
. Если вопрос действительно «Есть ли более быстрый / более умный способ сделать это?» , то ответ (как многие ответили) нет.
Если вопрос, однако, выполнен в стиле «Я получил этот вопрос на тесте теории сложности» (или подобном), то это может быть «уловка!». Это тот случай, к которому я стремился с моим ответом. В обобщенной задаче (с n
функциями, без ограничений) временная сложность составляет O(n)
при условии, что каждая функция ведет себя как O(1)
oracle . Вводя крышу из 1.000.000 функций, сложность времени получает постоянную верхнюю границу O(1000000 * 1) = O(1)
.