algorithm - 总和大于或等于 k 的最小子集
问题描述
我试图找到一种分而治之的算法来解决 O(n) 中的这个问题,但我什么也没找到。给定一个数组 A 和给定值 k。找到总和大于或等于 k 的最小子集。有人可以给我一个开始解决问题的想法吗?
任何帮助深表感谢。
解决方案
使用快速选择在预期的线性时间内执行此操作。
您的第一个快速选择会将数组分成两部分,一个包含较大的元素,另一个包含较小的元素。如果较大元素的总和 > k,则对其进行迭代。否则,以 k - sum(更大的元素)为目标对另一半进行迭代。
推荐阅读
- javascript - 邮递员:如何建立(半)复杂的可重用脚本库以进行收集
- python - 如何将列表变成字符串
- maven - JMeter + Maven:如何将测试结果数据发送到 Grafana
- ios - 无法推断复杂的闭包返回类型;添加显式类型以消除歧义
- codeigniter - 加载json数据如何在动态图中显示聚集的条形图
- r - 如何在R中找到负二项式概率
- python - Python 在 Google App Engine 中的作用
- django - 多个表单集仅在“额外”属性中保存表单集的数量:为什么?
- android - xxhdpi 文本到 textView textSize
- javascript - 从 DOM 片段中移除特定颜色