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

目录
相关文章
|
6月前
|
存储
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
【每日一题Day275】LC771宝石与石头 | 哈希表 状态压缩
43 0
|
6月前
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
43 0
|
6月前
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
【每日一题Day301】LC2337移动片段得到字符串 | 双指针 计分
48 0
|
6月前
|
机器学习/深度学习
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
【每日一题Day196】LC2106摘水果 | 枚举+前缀和数组 同向双指针+二分查找
56 0
|
1月前
|
算法
Leecode第十六题(最接近的三数之和)
这篇文章介绍了LeetCode第16题“最接近的三数之和”的题目要求、解题思路和代码实现,该算法题目要求从给定的整数数组中找出三个数,使它们的和最接近给定的目标值。
46 0
|
5月前
|
存储 算法 测试技术
力扣经典150题第四十九题:插入区间
力扣经典150题第四十九题:插入区间
23 0
|
6月前
【错题集-编程题】最长上升子序列(二)(贪心 + 二分)
【错题集-编程题】最长上升子序列(二)(贪心 + 二分)
|
6月前
|
vr&ar
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
【每日一题Day166】LC1053交换一次的先前排列 | 贪心
72 1
|
6月前
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
50 1
|
6月前
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
【每日一题Day314】LC1921消灭怪物的最大数量 | 贪心+排序
46 0