103 - fizz buzz

题目

写一个程序,输出从 1 到 n 数字的字符串表示。

  1. 如果 n 是3的倍数,输出“Fizz”;

  2. 如果 n 是5的倍数,输出“Buzz”;

3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。

示例:

n = 15,

返回: [ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz" ]

解答

这题。。感觉不难。。

var fizzBuzz = function (n) {
  let res = new Array(n);
  for (let 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] = String(i)
    }
  }
  return res
};

Runtime: 64 ms, faster than 56.95% of JavaScript online submissions for Fizz Buzz.

Memory Usage: 36.9 MB, less than 95.00% of JavaScript online submissions for Fizz Buzz.

也可以这么解:

/**
 * @param {number} n
 * @return {string[]}
 */
var fizzBuzz = function (n) {
  let res = new Array(n);
  for (let i = 1; i <= n; i++) {
    let temp = ""
    if (i % 3 === 0) {
      temp += "Fizz"
    }
    if (i % 5 === 0) {
      temp += "Buzz"
    }
    if (i % 3 !== 0 && i % 5 !== 0) {
      temp += i
    }
    res[i - 1] = temp
  }
  return res
};

Runtime: 80 ms, faster than 8.79% of JavaScript online submissions for Fizz Buzz.

Memory Usage: 37.4 MB, less than 65.00% of JavaScript online submissions for Fizz Buzz.

嗯。。第一种更好,节省脑力,速度也更快。

速度快的原因可能是push比重新指向新的字符串要节约成本吧

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
}

Runtime: 116 ms, faster than 47.02% of Go online submissions for Fizz Buzz.

Memory Usage: 136.6 MB, less than 100.00% of Go online submissions for Fizz Buzz.

。。。为啥go会用那么多内存。。

关键用了那么多,居然还是100%😂

class Solution:
    def fizzBuzz(self, n: int) -> List[str]:
        res = [0] * n
        for i in range(1, n + 1):
            if i % 3 == 0 and i % 5 == 0:
                res[i - 1] = "FizzBuzz"
            elif i % 3 == 0:
                res[i - 1] = "Fizz"
            elif i % 5 == 0:
                res[i - 1] = "Buzz"
            else:
                res[i - 1] = str(i)
        return res

Runtime: 52 ms, faster than 60.30% of Python3 online submissions for Fizz Buzz.

Memory Usage: 15 MB, less than 6.38% of Python3 online submissions for Fizz Buzz.

感觉python的for-range好适合这个题目啊。。

Last updated

Was this helpful?