【每日一题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

目录
相关文章
|
2月前
|
存储
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
27 0
|
2月前
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
27 0
|
2月前
|
机器学习/深度学习
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
33 0
|
2月前
【每日一题Day297】LC1444切披萨的方案数 | 动态规划+二维前缀和
【每日一题Day297】LC1444切披萨的方案数 | 动态规划+二维前缀和
42 0
|
2月前
【每日一题Day155】LC1630等差子数组 | 枚举+排序
【每日一题Day155】LC1630等差子数组 | 枚举+排序
22 0
|
2月前
|
vr&ar
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
53 1
|
2月前
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
32 1
|
2月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
28 0
|
2月前
|
存储 算法
【每日一题Day310】LC1654到家的最少跳跃次数 | BFS
【每日一题Day310】LC1654到家的最少跳跃次数 | BFS
25 0
|
2月前
|
计算机视觉
【每日一题Day231】LC1240铺瓷砖 | 暴力回溯
【每日一题Day231】LC1240铺瓷砖 | 暴力回溯
26 0