力扣新手村第3题: Fizz Buzz
原题: 给你一个整数 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) {
let answer = [];
for(let i = 1; i <= n; i++){
if(i%3 === 0 && i%5 !== 0){
answer[i-1] = 'Fizz';
}else if(i%5 === 0 && i%3 !== 0){
answer[i-1] = 'Buzz';
}else if(i%3 === 0 && i%5 === 0){
answer[i-1] = 'FizzBuzz';
}else {
answer[i-1] = `${i}`;
}
}
return answer;
};
case通过,也提交成功了
力扣官方答案
var fizzBuzz = function(n) {
const answer = [];
for (let i = 1; i <= n; i++) {
const sb = [];
if (i % 3 === 0) {
sb.push("Fizz");
}
if (i % 5 === 0) {
sb.push("Buzz");
}
//这里判断长度确认其既不是3的倍数也不是5的倍数
if (sb.length === 0) {
sb.push(i);
}
//这个时候sb的可能性有4种
//[i]、['Fizz']、['Buzz']、['Fizz','Buzz']
answer.push(sb.join(' '));
}
return answer;
};
从官方的答案来看,今天写的基本上是可以的,空间复杂度和官方的一致,都是O(n); 这里[1].join(' ')之后,数字直接变成字符串,不用再像我的答案里面,还加个模板;