小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
题目描述
写一个程序,输出从 1 到 n 数字的字符串表示。
-
如果 n 是3的倍数,输出“Fizz”;
-
如果 n 是5的倍数,输出“Buzz”;
-
如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
思路分析
- 今天的算法每日一题是简单题目,我们按照题意,
如果 n 是3的倍数,输出“Fizz”,如果 n 是5的倍数,输出“Buzz”,如果 n 同时是3和5的倍数,输出 “FizzBuzz”。在代码开发中,需要先判断是否同时是3和5的倍数,然后在分别判断,即可通过这个题目。具体实现代码如下:
通过代码
class Solution {
public List<String> fizzBuzz(int n) {
List<String> ans = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 5 ==0) {
ans.add("FizzBuzz");
} else if (i % 3 == 0) {
ans.add("Fizz");
} else if (i % 5 == 0) {
ans.add("Buzz");
} else {
ans.add(String.valueOf(i));
}
}
return ans;
}
}
复制代码
总结
- 朴素算法的时间复杂度是O(n),空间复杂度是O(1)。这里需要注意,算法的空间复杂度是O(1)不是O(n)。空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。而函数返回值占用的空间大小是固定的,不计入。
- 坚持算法每日一题,加油!