Fizz Buzz
Описание задачи #
Дано целое число n.
Напишите функцию, которая принимает в качестве параметра число n и возвращает массив строк answer, который формируется по следующим правилам:
answer[i] == "FizzBuzz", еслиiделится одновременно на 3 и 5;answer[i] == "Fizz", еслиiделится только на 3;answer[i] == "Buzz", еслиiделится только на 5;answer[i] == i, во всех остальных случаях.
Ограничения #
Значение n находится в диапазоне от 1 до 104.
Примеры #
-
Входные данные:
3Ответ:
["1","2","Fizz"] -
Входные данные:
5Ответ:
["1","2","Fizz","4","Buzz"] -
Входные данные:
14Ответ:
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
Решение #
Для решения задачи нужно запустить цикл от 1 до n и на каждой итерации проверять 4 взаимоисключающих условия.
Если условие выполняется, то в результирующий массив добавляется соответсвующая строка.
Реализация #
-
package main import "strconv" func fizzBuzz(n int) []string { res := make([]string, n) for i := 1; i <= n; i++ { if i%3 == 0 && i%5 == 0 { res[i-1] = "FizzBuzz" } else if i%3 == 0 { res[i-1] = "Fizz" } else if i%5 == 0 { res[i-1] = "Buzz" } else { res[i-1] = strconv.Itoa(i) } } return res } -
export const fizzBuzz = (n: number): string[] => { const res: string[] = [] for (let i = 1; i <= n; i++) { if (i % 3 == 0 && i % 5 == 0) { res.push("FizzBuzz") } else if (i % 3 == 0) { res.push("Fizz") } else if (i % 5 == 0) { res.push("Buzz") } else { res.push(String(i)) } } return res }
Оценка сложности #
По времени
Сложность по времени линейная — O(n), так как мы итерируемся от 1 до n.
По памяти
Сложность по памяти константная — O(1), так как мы не создаем дополнительных переменных.