假设所有的奶酪都让第二个老鼠吃掉,计算第二个老鼠的总得分sum。因为第一个老鼠还要吃掉k个替换第二个老鼠吃的k个,所以此时就要考虑替换哪k位数可以使sum最大,替换只能是第一只老鼠用第i位去替换第二只老鼠的第i位(一一对应),所以将n位都做差存入differ中,再排序找出最大的前k位数加入sum中即可。
计算第二只老鼠的分数总和:
做差:
更新sum最大值:sum=sum+(max(differ)前k个)
class Solution {
public:
int miceAndCheese(vector<int>& reward1, vector<int>& reward2, int k) {
int n=reward1.size();
vector<int>differ;
int sum=0;
for(int i=0;i<n;i++)
{
differ.push_back(reward1[i]-reward2[i]);
sum+=reward2[i];
}
sort(differ.begin(),differ.end());
for(int i=n-1;i>n-1-k;i--)
{
sum+=differ[i];
}
return sum;
}
};