C ++ Fizzbuzz Leetcode向量push_back替换了所有先前的元素

问题描述

我遇到一个问题,其中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 (将#修改为@)