【牛客网】马三来刷题之数组单调和

博主分享了在牛客网上遇到的一道关于计算数组单调和的问题,该问题需要找到一种高效算法,确保在3秒内完成不超过32768K空间限制的计算。单调和是指数组中元素i左边小于等于它的数字之和。博客提供了题目描述、热度指数以及算法知识的视频链接,并鼓励每天练习一道题来保持状态。

这几天放假回家了,没刷题,心里满满的愧疚感~,题目链接:http://www.nowcoder.com/practice/8397609ba7054da382c4599d42e494f3?tpId=49&tqId=29364&rp=1&ru=/ta/2016test&qru=/ta/2016test/question-ranking

数组单调和

题目描述

现定义数组单调和为所有元素i的f(i)值之和。这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和。请设计一个高效算法,计算数组的单调和。

给定一个数组A同时给定数组的大小n,请返回数组的单调和。保证数组大小小于等于500,同时保证单调和不会超过int范围。

测试样例:
[1,3,5,2,4,6],6
返回:27
刚开始想开一个数组用动态规划来做的,数组中每个元素存的是自己的单调和F[i],然后最后一个循环把他们加起来就可以了。后来发现时间卡的不是很紧,用了两个for循环也能过~

int calcMonoSum(vector<int> A, int n)
{
    int sum = 0;
    for(int i=1; i<n; i++)
    {
        int fi = 0;
        for(int j=0; j<i; j++)
            if(A[j]<=A[i])
                fi+= A[j];
        sum += fi;
    }
    return sum;
}


每天一道题,保持新鲜感,就这样~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值