K 件物品的最大和【LC2600】
袋子中装有一些物品,每个物品上都标记着数字
1
、0
或-1
。给你四个非负整数
numOnes
、numZeros
、numNegOnes
和k
。袋子最初包含:
numOnes
件标记为1
的物品。numZeroes
件标记为0
的物品。numNegOnes
件标记为-1
的物品。现计划从这些物品中恰好选出
k
件物品。返回所有可行方案中,物品上所标记数字之和的最大值。
-
思路:贪心
每次优先取数字较大的数字,取完了再取次大的,保证最终数字之和最大文章来源:https://www.toymoban.com/news/detail-527663.html
-
实现文章来源地址https://www.toymoban.com/news/detail-527663.html
class Solution { public int kItemsWithMaximumSum(int numOnes, int numZeros, int numNegOnes, int k) { if (k <= numOnes){ return k; }else if ( k <= numOnes + numZeros){ return numOnes; }else{ return numOnes - (k - numOnes - numZeros); } } }
- 复杂度
- 时间复杂度: O ( 1 ) O(1) O(1)
- 空间复杂度: O ( 1 ) O(1) O(1)
- 复杂度
到了这里,关于【每日一题Day256】LC2600K 件物品的最大和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!