【每日一题Day355】LC1402 做菜顺序 | 贪心+排序

简介: 【每日一题Day355】LC1402 做菜顺序 | 贪心+排序

做菜顺序【LC1402】

一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。

一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是 time[i]*satisfaction[i]

返回厨师在准备了一定数量的菜肴后可以获得的最大 like-time 系数 总和。

你可以按 任意 顺序安排做菜的顺序,你也可以选择放弃做某些菜来获得更大的总和。

思路

  • 贪心:
  • 为了获得最大的 like-time 系数 总和,应按照满意度升序做菜;
  • 满意度大的最后再做;
  • 满意度为负数的菜,可以选择做或者不做。
  • 排序后倒序遍历,增加一道菜like-time系数变化量为:satisfaction[i] +…+ satisfaction[n-1],如果大于0,那么可以使 like-time 系数 总和增加,那么选择做这道菜
  • 实现
class Solution {
    public int maxSatisfaction(int[] satisfaction) {
        // 贪心:为了获得最大的 like-time 系数 总和,应按照满意度升序做菜;满意度大的最后再做;满意度为负数的菜,可以选择做或者不做
        // 大于等于0的菜必做,然后选择负数的菜作为第一道菜,看其能否使like-time系数
        // 排序后倒序遍历:每增加一道菜like-time系数变化量为:satisfaction[i] +....+ satisfaction[n-1]
        Arrays.sort(satisfaction);
        int n = satisfaction.length;
        if (satisfaction[n - 1] <= 0) return 0;
        int sum = 0, res = 0;
        for (int i = n - 1; i >= 0; i--){
            sum += satisfaction[i];
            if (sum > 0){
                res += sum;
            }else{
                break;
            }
        }
        return res;
    }
}

image.png

目录
打赏
0
0
0
0
5
分享
相关文章
【动态规划】【状态压缩】【C++算法】1815 得到新鲜甜甜圈的最多组数
【动态规划】【状态压缩】【C++算法】1815 得到新鲜甜甜圈的最多组数
|
11月前
【每日一题Day266】LC18四数之和 | 排序+双指针
【每日一题Day266】LC18四数之和 | 排序+双指针
57 1
|
11月前
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
63 0
|
11月前
|
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
63 0
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
79 0
LeetCode 周赛上分之旅 #38 结合排序不等式的动态规划
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
105 0
|
11月前
|
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
102 1
|
11月前
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
87 1
|
11月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
76 0
【每日一题Day323】LC630课程表 III | 动态规划 反悔贪心
【每日一题Day323】LC630课程表 III | 动态规划 反悔贪心
60 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等