2600.K件物品的最大和
链接:2600.K件物品的最大和
难度:Easy
标签:贪心、数学
简介:现计划从这些物品中恰好选出 k 件物品。
题解 1 - cpp
- 编辑时间:2023-07-05
- 执行用时:8ms
- 内存消耗:5.9MB
- 编程语言:cpp
- 解法介绍:贪心。
class Solution {
public:
    int kItemsWithMaximumSum(int numOnes, int numZeros, int numNegOnes, int k) {
        int res = 0;
        if (k && numOnes) {
            res += min(k, numOnes);
            k -= min(k, numOnes);
        }
        if (k && numZeros) {
            k -= min(k, numZeros);
        }
        if (k && numNegOnes) {
            res -= min(k, numNegOnes);
            k -= min(k, numNegOnes);
        }
        return res;
    }
};
题解 2 - python
- 编辑时间:2023-03-26
- 执行用时:36ms
- 内存消耗:14.9MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def kItemsWithMaximumSum(self, numOnes: int, numZeros: int, numNegOnes: int, k: int) -> int:
        if numOnes >= k:
            return k
        elif numOnes + numZeros >= k:
            return numOnes
        else:
            return numOnes - (k - numOnes-numZeros)
题解 3 - cpp
- 编辑时间:2023-03-26
- 内存消耗:5.7MB
- 编程语言:cpp
- 解法介绍:分段计算。
class Solution {
public:
    int kItemsWithMaximumSum(int numOnes, int numZeros, int numNegOnes, int k) {
        if (numOnes >= k) return k;
        if (numOnes + numZeros >= k) return numOnes;
        return numOnes - (k - numOnes - numZeros);
    }
};
题解 4 - rust
- 编辑时间:2023-03-26
- 内存消耗:2MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn k_items_with_maximum_sum(
        num_ones: i32,
        num_zeros: i32,
        num_neg_ones: i32,
        k: i32,
    ) -> i32 {
        if num_ones >= k {
            k
        } else if num_ones + num_zeros >= k {
            num_ones
        } else {
            num_ones - (k - num_ones - num_zeros)
        }
    }
}