使用贪心的思想。为了让结果最大:
- 首先拿
numOnes中的物品 - 如果那不够
k件物品,那么从numZeros中拿 - 如果还是没拿够
k件物品,再从numNegOnes中拿
时间复杂度:O(1)
空间复杂度:O(1)
class Solution {
public int kItemsWithMaximumSum(int numOnes, int numZeros, int numNegOnes, int k) {
int sum = 0;
if (k > 0 && numOnes > 0) {
if (k >= numOnes) {
k -= numOnes;
sum += numOnes;
} else {
sum += k;
k = 0;
}
}
if (k > 0 && numZeros > 0) {
if (k >= numZeros) {
k -= numZeros;
} else {
k = 0;
}
}
if (k > 0 && numNegOnes > 0) {
if (k >= numNegOnes) {
k -= numNegOnes;
sum -= numNegOnes;
} else {
sum -= k;
k = 0;
}
}
return sum;
}
}