LeetCode 题解工作台
Fizz Buzz
给你一个整数 n ,返回一个字符串数组 answer ( 下标从 1 开始 ),其中: answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。 answer[i] == "Fizz" 如果 i 是 3 的倍数。 answer[i] == "Buzz" 如果 i 是 5…
3
题型
6
代码语言
3
相关题
当前训练重点
简单 · 数学·string
答案摘要
我们遍历从 1 到 n 的每个整数,对于每个整数,我们检查它是否是 3 和 5 的倍数,或者只是 3 的倍数,或者只是 5 的倍数。根据检查的结果,我们将相应的字符串添加到答案数组中。 时间复杂度 ,其中 是题目给定的整数。忽略答案数组的空间消耗,空间复杂度 。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 数学·string 题型思路
题目描述
给你一个整数 n ,返回一个字符串数组 answer(下标从 1 开始),其中:
answer[i] == "FizzBuzz"如果i同时是3和5的倍数。answer[i] == "Fizz"如果i是3的倍数。answer[i] == "Buzz"如果i是5的倍数。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
解题思路
方法一:模拟
我们遍历从 1 到 n 的每个整数,对于每个整数,我们检查它是否是 3 和 5 的倍数,或者只是 3 的倍数,或者只是 5 的倍数。根据检查的结果,我们将相应的字符串添加到答案数组中。
时间复杂度 ,其中 是题目给定的整数。忽略答案数组的空间消耗,空间复杂度 。
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
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | 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 |
面试官常问的追问
外企场景- 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.
常见陷阱
外企场景- 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.
进阶变体
外企场景- 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.