如何通过添加数组元素获得最接近数字的值

时间:2017-01-14 13:03:51

标签: algorithm data-structures

假设我有20号和数字组n" n这里只有4例如#34; {7,2,9,3}

我想知道大于20的最接近的值和小于20的最接近的值,我可以从单个元素或从数组中添加多个元素。

我不确定应该使用哪种数据结构或算法

谢谢!

1 个答案:

答案 0 :(得分:0)

它被称为背包问题(嗯,你的问题是一个微小的变化,但它并不重要)。

如果数字总和相当低(状态为总和,则值为真或假,取决于此总和是否可达),您可以使用动态编程。这种方法的时间复杂度为O(N * SUM)

如果数组的数字元素很小,您还可以迭代所有子集并计算每个子集的总和(它需要O(2^N * Poly(N))时间)。

如果元素的数量很少,但不是很小,你可以使用中间相遇技术使之前的解决方案稍微好一些(O(2^(N/2) * Poly(N))。