Асимптотическая сложность измеряется как функция от n для ALL n. Мы обеспокоены тем, что происходит, когда n становится большим. Действительно, действительно большой.
Может быть, на практике n всегда будет крошечным. Хорошо.
Но когда вы даете меру сложности для алгоритма, вы по определению говорите, что происходит с ростом n. И растет и растет. И когда это произойдет, он будет карликом К.
Значит, O (n).
Пояснение:
Это правда, что в спецификации проблемы сказано:
n - положительное целое число, которое находится в диапазоне [1, 10000].
Все целые числа в массиве будут в диапазоне [-10000, 10000].
Но помните, это как раз для этой проблемы! Решение, учитывая жесткие коды значения K. Используемый здесь алгоритм действительно должен быть записан как O (n + K), как вы заметили. Это K не является постоянным фактором и, вероятно, не должно быть отброшено.
Однако с асимптотической сложностью (Big-O, Big-Theta и т. Д.) Даже с произвольным, но конечным K, вы все равно можете найти константы k и N такие, что для всех n> N, kn> количество необходимых операций в этом алгоритме, который является определением Big-O. Вот почему вы увидите, что многие люди говорят O (n).
Надеюсь, это поможет.