class Solution {
// 假设所有奶酪都给老鼠2吃, 再从中选出k块转而给老鼠1吃
// 假设i号奶酪转而给老鼠1吃, 那么分数会增加r1[i]-r2[i], 这个差值可正可负
// 想要分数最大: 差值最大的k块奶酪给老鼠1吃, 剩下的仍给老鼠2吃
public int miceAndCheese(int[] reward1, int[] reward2, int k) {
int n = reward1.length;
Integer[] diff = new Integer[n];
int res = 0;
for(int i=0;i<n;i++)
{
diff[i] = reward1[i]-reward2[i];
res += reward2[i];
}
//对diff进行排序降序
Arrays.sort(diff, (a, b) -> b - a);
for(int i=0;i<k;i++)
{
res += diff[i];
}
return res;
}
}
在本题中Java的Arrays.sort()仅支持对引用数据类型进行自定义排序,如果是基本数据类型(如int类型),将无法使用Comparator进行自定义排序。可以使用下面的方法来实现
如果是int[] diff则不能用Arrays.sort()