首页 > 解决方案 > 在所有选项中获得最少的金额

问题描述

任何人都可以参考可以执行以下操作的已知算法,而无需对桌面上的所有选项进行暴力破解;该表有列:id、数量、来源和创建日期用户输入一组 id,算法应返回最后一行的所有来源中的最小数量(基于创建日期)

例子:

(id) 1 On June 1st quantity was 9 from Source A
2 On June 1st quantity was 5 from Source A
3 On June 1st quantity was 7 from Source A
1 On May 25th quantity was 6 from Source B
2 On May 25th quantity was 9 from Source B
3 On May 25th quantity was 10 from Source B
3 On May 1st quantity was 7 from Source A
1 On May 1st quantity was 6 from Source B

假设用户输入了一个包含 id 1 和 2 的集合,则来自源 A 的 id 1 和 2 的最新数量分别为 9 和 5,来自源 B 的最新数量为 6 和 9,因为 A 的总数少于所有其他来源,因此结果应该是 A(9)

我所做的并试图实现更好的解决方案:对于每个来源,循环输入的所有产品并获得总和,然后获得所有来源的最小值希望我正确解释了这个问题,任何人都可以提出一种算法或最快的方法来解决上述问题?

标签: algorithmdynamic-programming

解决方案


预处理您的数据,使其更方便。创建由 (id,source) 形式的元组键控的字典,其值是该组合的最新数量。您将不得不进行一些循环来设置这样的字典,之后您将获得非常快速的求和,您所要做的就是对与目标子集中的 id 对应的值求和。在像 Python 这样对字典有很好支持的语言中,这将相当容易。

如果您将这些数据存储在 R 或 pandas 数据框之类的东西中,那么将会有更适合这些工具的解决方案。如果是这种情况,您可以提出一个正确标记的问题,其中包含可重现的示例数据框。


推荐阅读