LeetCode 题解工作台

Fizz Buzz

给你一个整数 n ,返回一个字符串数组 answer ( 下标从 1 开始 ),其中: answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。 answer[i] == "Fizz" 如果 i 是 3 的倍数。 answer[i] == "Buzz" 如果 i 是 5…

category

3

题型

code_blocks

6

代码语言

hub

3

相关题

当前训练重点

简单 · 数学·string

bolt

答案摘要

我们遍历从 1 到 n 的每个整数,对于每个整数,我们检查它是否是 3 和 5 的倍数,或者只是 3 的倍数,或者只是 5 的倍数。根据检查的结果,我们将相应的字符串添加到答案数组中。 时间复杂度 ,其中 是题目给定的整数。忽略答案数组的空间消耗,空间复杂度 。

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 数学·string 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

给你一个整数 n ,返回一个字符串数组 answer下标从 1 开始),其中:

  • answer[i] == "FizzBuzz" 如果 i 同时是 35 的倍数。
  • answer[i] == "Fizz" 如果 i3 的倍数。
  • answer[i] == "Buzz" 如果 i5 的倍数。
  • answer[i] == i (以字符串形式)如果上述条件全不满足。

 

示例 1:

输入:n = 3
输出:["1","2","Fizz"]

示例 2:

输入:n = 5
输出:["1","2","Fizz","4","Buzz"]

示例 3:

输入:n = 15
输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

 

提示:

  • 1 <= n <= 104
lightbulb

解题思路

方法一:模拟

我们遍历从 1 到 n 的每个整数,对于每个整数,我们检查它是否是 3 和 5 的倍数,或者只是 3 的倍数,或者只是 5 的倍数。根据检查的结果,我们将相应的字符串添加到答案数组中。

时间复杂度 O(n)O(n),其中 nn 是题目给定的整数。忽略答案数组的空间消耗,空间复杂度 O(1)O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
    def fizzBuzz(self, n: int) -> List[str]:
        ans = []
        for i in range(1, n + 1):
            if i % 15 == 0:
                ans.append('FizzBuzz')
            elif i % 3 == 0:
                ans.append('Fizz')
            elif i % 5 == 0:
                ans.append('Buzz')
            else:
                ans.append(str(i))
        return ans
speed

复杂度分析

指标
时间complexity is O(n) since each number is checked once for divisibility and string concatenation is constant time. Space complexity is O(n) for the output array, with no extra data structures required beyond simple string variables.
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    Checks for modulo operations versus combined conditional logic.

  • question_mark

    Watches for correct 1-indexed output versus off-by-one errors.

  • question_mark

    Notes clarity in string concatenation instead of multiple nested conditions.

warning

常见陷阱

外企场景
  • error

    Using zero-based indexing incorrectly, leading to off-by-one results.

  • error

    Checking divisibility in the wrong order, causing 'FizzBuzz' to be replaced by 'Fizz' or 'Buzz'.

  • error

    Appending numbers instead of converting to strings for non-multiples.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Return the result as a comma-separated string instead of an array.

  • arrow_right_alt

    Modify divisibility rules to use different multiples like 2 and 7 for custom patterns.

  • arrow_right_alt

    Handle large n with streaming output to reduce memory usage.

help

常见问题

外企场景

Fizz Buzz题解:数学·string | LeetCode #412 简单