LeetCode面向运气之Javascript—第2600题-K件物品的最大和-94.68%

LeetCode第2600题-K件物品的最大和

题目要求

袋子中装有一些物品,每个物品上都标记着数字 1 、0 或 -1
四个非负整数 numOnes 、numZeros 、numNegOnes 和 k 。

袋子最初包含:

  • numOnes 件标记为 1 的物品。
  • numZeroes 件标记为 0 的物品。
  • numNegOnes 件标记为 -1 的物品。

现计划从这些物品中恰好选出 k 件物品。返回所有可行方案中,物品上所标记数字之和的最大值。

举例

输入:numOnes = 3, numZeros = 2, numNegOnes = 0, k = 2
输出:2
解释:袋子中的物品分别标记为 {1, 1, 1, 0, 0} 。取 2 件标记为 1 的物品,得到的数字之和为 2 。
可以证明 2 是所有可行方案中的最大值。

输入:numOnes = 3, numZeros = 2, numNegOnes = 0, k = 4
输出:3
解释:袋子中的物品分别标记为 {1, 1, 1, 0, 0} 。取 3 件标记为 1 的物品,1 件标记为 0 的物品,得到的数字之和为 3 。
可以证明 3 是所有可行方案中的最大值。

思路

第一次首次提交就成功的题目!!!

  1. 就是1、0、-1的问题,直接用数量判断就行
  2. 不够1的就是k,超过1+0的就减去剩几个-1
  3. 其他的就是1的数量

代码实现

var kItemsWithMaximumSum = function (numOnes, numZeros, numNegOnes, k) {
    if (k <= numOnes) return k
    if (k > numOnes + numZeros) return 2*numOnes + numZeros - k
    return numOnes
};

2*numOnes + numZeros - k本来是numOnes - (k - numOnes - numZeros),运用小学去括号的数学知识进行简化
LeetCode面向运气之Javascript—第2600题-K件物品的最大和-94.68%_第1张图片

你可能感兴趣的:(LeetCode,leetcode,javascript,算法)