leetcode 1402. 做菜顺序【贪心】

从大到小排序
如 
5 0 -1 -8 -9
1
2 1
3 2  1
4 3  2  1
5 4  3  2  1

每次在之前的基础上把前i个累加和加一遍
然后加上第i个
遍历所有取最大即可
class Solution {
public:
    int maxSatisfaction(vector<int>& s) {
        int n = s.size();
        auto cmp = [&](int a,int b){
            return a>b;
        };
        
        sort(s.begin(),s.end(),cmp);
        
        vector<int> sum(n+1,0);
        
        for(int i=1;i<=n;i++){
            sum[i] = sum[i-1] + s[i-1];
        }
        int ret = 0;
        int t=0;
        for(int i=0;i<n;i++){
            t += sum[i];
            t += s[i];
            ret =max(t,ret);
        }
        return ret;
    }
};

在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页