Skip to content

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)

解题感受

相对简单的一题,执行效果拼的是网速吧。越是简单的题目也要有多重解法来做,训练大脑编程思维,毕竟难的题目思路也是很难,就需要从简单的题目多种解法多种思维模式积累做起

优质题解