2611. 老鼠和奶酪
# 2611. 老鼠和奶酪 (opens new window)
# 1.贪心+排序
每一块奶酪只有两种选择,给第一只老鼠或者是第二只老鼠吃掉,题目简化为从两个数组中统计最大的总和,其中有k个来自reward1,使用差值的思想求解计算。
极端思考首先所有奶酪都被第二只老鼠吃掉,统计reward2的数组总和sum,创建长度为n的数组diff,保存每个位置上两个奶酪的分数差值diff[i]=reward1[i]−reward2[i]。根据贪心思想,为了使总分最大化,只需要找到diff数组中最大的k个数,最后结果即为
class Solution {
public int miceAndCheese(int[] reward1, int[] reward2, int k) {
int ans=0;
int[] diff=new int[reward2.length];
for(int i=0;i<reward2.length;i++){
diff[i]=reward1[i]-reward2[i];
ans+=reward2[i];
}
Arrays.sort(diff);
for(int i=0;i<k;i++){
ans+=diff[reward1.length-i-1];
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57