【LetMeFly】2611.老鼠和奶酪:排序 + 贪心

力扣题目链接:https://leetcode.cn/problems/mice-and-cheese/

有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉。

下标为 i 处的奶酪被吃掉的得分为:

  • 如果第一只老鼠吃掉,则得分为 reward1[i] 。
  • 如果第二只老鼠吃掉,则得分为 reward2[i] 。

给你一个正整数数组 reward1 ,一个正整数数组 reward2 ,和一个非负整数 k 。

请你返回第一只老鼠恰好吃掉 k 块奶酪的情况下,最大 得分为多少。

示例 1:

输入:reward1 = [1,1,3,4], reward2 = [4,4,1,1], k = 2
输出:15
解释:这个例子中,第一只老鼠吃掉第 2 和 3 块奶酪(下标从 0 开始),第二只老鼠吃掉第 0 和 1 块奶酪。
总得分为 4 + 4 + 3 + 4 = 15 。
15 是最高得分。

示例 2:

输入:reward1 = [1,1], reward2 = [1,1], k = 2
输出:2
解释:这个例子中,第一只老鼠吃掉第 0 和 1 块奶酪(下标从 0 开始),第二只老鼠不吃任何奶酪。
总得分为 1 + 1 = 2 。
2 是最高得分。

提示:

  • 1 <= n == reward1.length == reward2.length <= 105
  • 1 <= reward1[i], reward2[i] <= 1000
  • 0 <= k <= n

方法一:排序 + 贪心

假如全部奶酪被老鼠 2 2 2吃掉,那么将会获得 ∑ r e w a r d 2 \sum reward_2 ∑reward2​分。

在此基础上,如果第 i i i块奶酪换成被第 1 1 1个老鼠吃掉,那么分数将会变化 r e w a r d 1 [ i ] − r e w a r d 2 [ i ] reward_1[i]-reward_2[i] reward1​[i]−reward2​[i]。

又因为第 1 1 1只老鼠必须吃掉 k k k块奶酪,因此最好是吃掉 r e w a r d 1 [ i ] − r e w a r d 2 [ i ] reward_1[i]-reward_2[i] reward1​[i]−reward2​[i]最大的 k k k块奶酪。

提前计算出所有的 r e w a r d 1 [ i ] − r e w a r d 2 [ i ] reward_1[i]-reward_2[i] reward1​[i]−reward2​[i]并排序,选取最大的 k k k个与 ∑ r e w a r d 2 \sum reward_2 ∑reward2​求和即为答案。

  • 时间复杂度 O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n = l e n ( r e w a r d 1 ) n=len(reward_1) n=len(reward1​)
  • 空间复杂度 O ( n ) O(n) O(n)

AC代码

C++

class Solution {public:int miceAndCheese(vector<int>& reward1, vector<int>& reward2, int k) {vector<int> first(reward1.size());int ans = 0;for (int i = 0; i < reward1.size(); i++) {ans += reward2[i];first[i] = reward1[i] - reward2[i];}sort(first.begin(), first.end());while (k) {ans += first[first.size() - k--];}return ans;}
};

Python

Py代码太简洁辣!

# from typing import Listclass Solution:def miceAndCheese(self, reward1: List[int], reward2: List[int], k: int) -> int:ans = sum(reward2)first = [reward1[i] - reward2[i] for i in range(len(reward1))]first.sort()while k:ans += first[-k]k -= 1return ans

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/131085720

LeetCode 2611. 老鼠和奶酪:排序 + 贪心相关推荐

  1. Leetcode.2611 老鼠和奶酪

    题目链接 Leetcode.2611 老鼠和奶酪 Rating : 1663 题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如 ...

  2. 【每日一题Day230】LC2611老鼠和奶酪 | 排序+贪心

    老鼠和奶酪[LC2611] 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第 ...

  3. 力扣 2611. 老鼠和奶酪 排序

    题目 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得分为 ...

  4. [LeetCode刷题] 2611. 老鼠和奶酪--Java实现

    ##  题目链接 2611. 老鼠和奶酪 - 力扣(LeetCode) ##  题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ...

  5. 力扣 2611. 老鼠和奶酪

    题目描述:2611. 老鼠和奶酪 有两只老鼠和n块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为i处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为reward1[i].如果第二只老鼠 ...

  6. ​LeetCode解法汇总2611. 老鼠和奶酪

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  7. 2611. 老鼠和奶酪

    题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得 ...

  8. 【2611. 老鼠和奶酪】

    来源:力扣(LeetCode) 描述: 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] ...

  9. 2611.老鼠和奶酪

    题目描述: 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ·如果第一只老鼠吃掉,则得分为 reward1[i]. ·如果第二只老鼠吃掉, ...

最新文章

  1. 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
  2. 9.35 渲染时字符串转义
  3. python将字典内容存入mysql
  4. FineUI 选中多行获取行ID
  5. redis发布订阅c接口_Redis 发布/订阅机制原理分析
  6. 2021国潮新消费产业洞察报告
  7. 「雕爷学编程」Arduino动手做(24)——水位传感器模块
  8. 数值和布尔值的解构赋值
  9. 俗语:“生不睡柳,死不睡杨”,有什么道理?
  10. 利用PhantomJS进行网页截屏,完美解决截取高度的问题
  11. Web 2.0理念在产品应用中的借鉴之处
  12. 添加谷歌账户显示与服务器,解决添加google同步帐户出错竟然可以这般简单!
  13. ThinkPhp项目部署到Linux session_start() 报错:failed:No such file or directory
  14. c语言和测绘程序设计,测绘程序设计(C语言版)
  15. 计算机232接口接线,9针rs232串口接线图以及接线方法
  16. 怎么将pdf转换成jpg图片格式
  17. 方维P2P短信接口修改
  18. Conflux 的自我进化:从 DAG 到树图| 对话伍鸣
  19. 决策树及输出结果解释
  20. 华视电子vue身份证读取

热门文章

  1. 我好像看到了假的数据分析?
  2. 计算机风冷散热系统的原理,CPU散热原理及散热方式浅析
  3. 用CSS+JS+HTNL仿原神官网
  4. 如何用Octave工具包
  5. 基于微信小程序的驾校教培小程序
  6. Ariduino入门笔记——9. Arduino 默认函数(串口通信)
  7. UDS服务基础篇之28
  8. 为什么跳槽加薪会比内部调薪要高?
  9. 【您的免费在线虚拟 Arduino 模拟器 - 2023】
  10. notepad 怎么写python_notepad怎么设置python的字体颜色