412. Fizz Buzz
解题过程
INFO
题目链接 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中: answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。 answer[i] == "Fizz" 如果 i 是 3 的倍数。 answer[i] == "Buzz" 如果 i 是 5 的倍数。 answer[i] == i (以字符串形式)如果上述条件全不满足
javascript
/**
* @link https://leetcode.cn/problems/fizz-buzz/
* @title 412. Fizz Buzz
* @description 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
* answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
* answer[i] == "Fizz" 如果 i 是 3 的倍数。
* answer[i] == "Buzz" 如果 i 是 5 的倍数。
* answer[i] == i (以字符串形式)如果上述条件全不满足
* @param {number} n
* @return {string[]}
*/
// 解法一
// 思路:穷举法,循环遍历所有情况即可
var fizzBuzz = function (n) {
const res = []
for (let i = 1; i <= n; i++) {
if (i % 15 === 0) {
res.push('FizzBuzz')
} else if (i % 3 === 0) {
res.push('Fizz')
} else if (i % 5 === 0) {
res.push('Buzz')
} else {
res.push(i + '')
}
}
return res
};
// 解法二
// 思路:优化一下解法一的数组操作,相对来说执行效果确实好一点点,利用数组特性
var fizzBuzz = function (n) {
const res = new Array(n)
for (let i = 0; i < res.length; i++) {
const num = i + 1
if (num % 15 === 0) {
res[i] = 'FizzBuzz'
} else if (num % 3 === 0) {
res[i] = 'Fizz'
} else if (num % 5 === 0) {
res[i] = 'Buzz'
} else {
res[i] = num + ''
}
}
return res
}
// 解法三
// 思路:利用声明数组遍历赋值,一行代码搞定,但是执行效果没有前面两种好
var fizzBuzz = function (n) {
return new Array(n).fill(0).map((item, index) => {
const num = index + 1
if (num % 15 === 0) {
return 'FizzBuzz'
} else if (num % 3 === 0) {
return 'Fizz'
} else if (num % 5 === 0) {
return 'Buzz'
} else {
return num + ''
}
})
}
// const result = fizzBuzz(3) // ["1","2","Fizz"]
// const result = fizzBuzz(5) // ["1","2","Fizz","4","Buzz"]
const result = fizzBuzz(15) // ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
console.log(result)
解题感受
相对简单的一题,执行效果拼的是网速吧。越是简单的题目也要有多重解法来做,训练大脑编程思维,毕竟难的题目思路也是很难,就需要从简单的题目多种解法多种思维模式积累做起