LeetCode 2611. 老鼠和奶酪:排序 + 贪心
【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. 老鼠和奶酪:排序 + 贪心相关推荐
- Leetcode.2611 老鼠和奶酪
题目链接 Leetcode.2611 老鼠和奶酪 Rating : 1663 题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如 ...
- 【每日一题Day230】LC2611老鼠和奶酪 | 排序+贪心
老鼠和奶酪[LC2611] 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第 ...
- 力扣 2611. 老鼠和奶酪 排序
题目 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得分为 ...
- [LeetCode刷题] 2611. 老鼠和奶酪--Java实现
## 题目链接 2611. 老鼠和奶酪 - 力扣(LeetCode) ## 题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ...
- 力扣 2611. 老鼠和奶酪
题目描述:2611. 老鼠和奶酪 有两只老鼠和n块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为i处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为reward1[i].如果第二只老鼠 ...
- LeetCode解法汇总2611. 老鼠和奶酪
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 2611. 老鼠和奶酪
题目描述 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] . 如果第二只老鼠吃掉,则得 ...
- 【2611. 老鼠和奶酪】
来源:力扣(LeetCode) 描述: 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: 如果第一只老鼠吃掉,则得分为 reward1[i] ...
- 2611.老鼠和奶酪
题目描述: 有两只老鼠和 n 块不同类型的奶酪,每块奶酪都只能被其中一只老鼠吃掉. 下标为 i 处的奶酪被吃掉的得分为: ·如果第一只老鼠吃掉,则得分为 reward1[i]. ·如果第二只老鼠吃掉, ...
最新文章
- 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件
- 9.35 渲染时字符串转义
- python将字典内容存入mysql
- FineUI 选中多行获取行ID
- redis发布订阅c接口_Redis 发布/订阅机制原理分析
- 2021国潮新消费产业洞察报告
- 「雕爷学编程」Arduino动手做(24)——水位传感器模块
- 数值和布尔值的解构赋值
- 俗语:“生不睡柳,死不睡杨”,有什么道理?
- 利用PhantomJS进行网页截屏,完美解决截取高度的问题
- Web 2.0理念在产品应用中的借鉴之处
- 添加谷歌账户显示与服务器,解决添加google同步帐户出错竟然可以这般简单!
- ThinkPhp项目部署到Linux session_start() 报错:failed:No such file or directory
- c语言和测绘程序设计,测绘程序设计(C语言版)
- 计算机232接口接线,9针rs232串口接线图以及接线方法
- 怎么将pdf转换成jpg图片格式
- 方维P2P短信接口修改
- Conflux 的自我进化:从 DAG 到树图| 对话伍鸣
- 决策树及输出结果解释
- 华视电子vue身份证读取