问题描述
我遇到一个问题,其中C ++ push_back()函数正在替换向量中的所有先前元素。给出了有效的代码
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> ans;
for(int i=1;i<=n;i++)
{
if(i%3==0 && i%5==0)
ans.push_back("FizzBuzz");
else if(i%3==0)
ans.push_back("Fizz");
else if(i%5==0)
ans.push_back("Buzz");
else
ans.push_back(to_string(i));
}
return ans;
}
};
将输出
["1","2","Fizz","4","Buzz","7","8","11","13","14","FizzBuzz"]
同时输入我的代码
class Solution {
public:
vector<string> fizzBuzz(int n) {
vector<string> os;
for (int i = 1; i <= n; i++) {
if (n % 15 == 0)
os.push_back("FizzBuzz");
else if (n % 3 == 0)
os.push_back("Fizz");
else if (n % 5 == 0)
os.push_back("Buzz");
else
os.push_back(to_string(i));
}
return os;
}
};
将输出
["FizzBuzz","FizzBuzz","FizzBuzz"]
如果测试用例为3,它将为["Fizz","Fizz"]
;如果测试用例为4,它将为["1","3","4"]
基本上,最后一个值用该特定答案替换所有先前的元素。
鉴于我的代码和答案代码几乎完全相同(除了我的向量名为ok
和答案向量名为ans
之外,为什么我的代码导致{{1 }}?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)