vivo 笔试 c++小白第一题超时,大佬们能不能解答一下?

int solution(int n)
{
int sum=0;
vector<int> v;
for(int i=1; i<=n; i++)
{
int j=i;
while(j--)
{
v.push_back(i);
}
}
for(int i=0; i<n; i++)
sum+=v[i];
cout<<sum<<endl;;
}




重做了

int solution(int n) {
    int sum = 0, day = 1;
    while (n != 0) {
        if (n >= day) {
            sum += day * day;
            n -= day;
        } else {
            sum += day * n;
            n = 0;
        }
        day++;
    }
    return sum;
}

#vivo##笔试题目#
全部评论
我猜应该是,要把结果return回去,你把他打到控制台了?我java的,C++不太懂阿,说错了可不要笑话俺。
1 回复 分享
发布于 2020-03-08 17:00
 #vivo#  你存的数太多了,假设这个n是50,你就得存2500个数,实际上用不上啊,可以直接在第二层循环计数,达到n就直接break到最外层。代码如下
点赞 回复 分享
发布于 2020-03-08 16:57
 while(j--), 这里在判断下v的长度,超过了就不用继续加了。。他要的是第n天,你这样n+1的也会被加进去。
点赞 回复 分享
发布于 2020-03-08 16:59
为什么要用vector?每次push_back都会耗时啊
点赞 回复 分享
发布于 2020-03-08 17:04
你的return呢。。这种函数式的要返回int,代码没什么问题感觉
点赞 回复 分享
发布于 2020-03-08 17:11
你直接乘i就行了为什么要一个个加起来
点赞 回复 分享
发布于 2020-03-08 18:02

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务