Сегодня я прошел испытания финансового плана на CodeWars. Цель состоит в том, чтобы определить общую сумму денег, сэкономленных за определенный период, с учетом конкретной схемы сбережений. Я исследовал два различных алгоритма, каждый со своими достоинствами. После тщательной оценки я могу с уверенностью сказать, что нашел два действительно работающих подхода! 🚀

JavaScript для плана финансирования на планете XY140Z-n | Кодовые войны

🔍 Подход 1: раскрытие силы математической магии! 🧮

В первом подходе я использовал магию закрытых формул. Используя математическую формулу (n * (n + 1) / 2), я вычислил сумму чисел от 1 до n. Умножение этой суммы на (n + 2) обеспечило эффективный и точный расчет общей экономии. Временная сложность этого алгоритма оставалась постоянной на уровне O(1), что делало его высокоэффективным даже при больших значениях n. ⚡

🔄 Подход 2: итеративный подход! ♻️

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

Чтобы проверить производительность этих двух подходов, код измеряет время выполнения для каждого подхода с помощью функции Date.now().

Размер ввода для теста установлен равным n = 100 000.

Результат:

Выход Алгоритма 1 = 500015000100000

Выход алгоритма 2 = 500015000100000

Время выполнения алгоритма 1 = 0 миллисекунд

Время выполнения алгоритма 2 = 37,543 миллисекунды

Ускорение = время выполнения алгоритма 2 / время выполнения алгоритма 1

Ускорение = 37,543 / 0

Однако мы не можем делить на ноль, поэтому нам нужно обработать этот особый случай. В этом случае можно сказать, что первый алгоритм значительно быстрее второго, и ускорение стремится к бесконечности.

Следовательно, мы можем заключить, что первый алгоритм бесконечно быстрее второго алгоритма для заданного размера входных данных 100 000.

Подводя итог, из рассуждений, представленных в этой статье, очевидно, что использование математических формул существенно влияет на достижение исключительной эффективности в управлении временной сложностью и повышении читабельности кода.

Спасибо, что прочитали эту статью!!!!