文章目录
-
- [Python3 【O(n) O(1)】](#Python3 【O(n) O(1)】)
- C++
-
- [.emplace_back() 【C++ 11 之后】](#.emplace_back() 【C++ 11 之后】)
Python3 【O(n) O(1)】
初始版本
python
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
ans = []
for i in range(1, n+1):
if i % 5 == 0 and i % 3 == 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
第一种情况 就是两种情况同时满足,两个都输出
官方题解的 逻辑也可以
- 需要注意 顺序
python
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
ans = []
for i in range(1, n+1):
# 拼接 输出的 字符串 s
s = ""
if i % 3 == 0:
s += "Fizz"
if i % 5 == 0:
s += "Buzz"
if s == "": # 既不是3的倍数,也不是5的倍数
s = str(i)
ans.append(s)
return ans
C++
cpp
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> ans;
for (int i = 1; i <= n; ++i){
string s;
if (i % 3 == 0){
s += "Fizz";
}
if (i % 5 == 0){
s += "Buzz";
}
if (s.size() == 0){
s = to_string(i);
}
//ans.push_back(s);
ans.emplace_back(s); // 比 push_back 快
}
return ans;
}
};
.emplace_back() 【C++ 11 之后】
在 C++11 之后,vector 容器中添加了新的方法emplace_back() ,和 push_back() 一样的是都是在容器末尾添加一个新的元素进去,不同的是 emplace_back() 在效率上相比较于 push_back() 有了一定的提升。
emplace_back 将一个就地构造 的元素添加到向量末尾。