【leetcode】412. Fizz Buzz

题目

Write a program that outputs the string representation of numbers from 1 to n.

But for multiples of three it should output “Fizz” instead of the number and for the multiples of five output “Buzz”. For numbers which are multiples of both three and five output “FizzBuzz”.

Example:

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

问题陈述:

太简单啦,略

题目思路:

遍历赋值,逢15、3、5的倍数赋值“FizzBuzz”,“Fizz”,“Buzz”,其余赋值为自然数顺序数

算法复杂度:O(n)

这里需要注意的是vector的push_back()函数复杂度为O(n),但是按下标随机访问的时间复杂度为O(1),所以用下标访问再赋值会比较快

代码:

class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> result(n);
for (int i = 1; i <= n; ++i) {
if (i % 15 == 0) {
result[i-1] = "FizzBuzz";
}
else
{
if (i % 5 == 0) {
result[i-1] = "Buzz";
}
else
{
if (i % 3 == 0) {
result[i-1] = "Fizz";
}
else
{
result[i-1] = to_string(i);
}
}
}
}
return result;
}
};

结果