【发布时间】:2017-08-22 12:33:00
【问题描述】:
我想用标题表达的是以下练习: 给定一个正数和负数的列表,其中 0
例如: 名单:1 -4 5 6 -3 -2 14
如果阈值为 4,则最佳解决方案是{-4}
如果阈值为 9,则最佳解决方案是{-3 -2 14}
如果阈值为 100,则最佳解决方案是 {5 6 -3 -2 14}
如果阈值为 7,则最佳解决方案是 {-4 5 6}
如果阈值为 2,则最佳解决方案是 {-2}
对于那些对我如何解决问题感兴趣的人:
我使用的 O(n^2) 解决方案只是遍历了每个可能的子数组总和。它并没有重新计算每个总和,而只是添加一个遇到的新数字。
【问题讨论】:
-
你的问题可能必须通过递归方式解决。
-
但递归解决方案通常不是最快的。我感觉有一些技巧或数据结构可以在这种情况下提供帮助。到目前为止,我还没有找到这样的技巧或结构。
-
你应该提供你的结构的一部分,以帮助可以回答的人可视化你的问题。
-
你的意思是代码变慢了?还是实际需要的示例?
-
"如果阈值为 4,最好的解决方案是
{-4}"和"如果阈值是 2,最好的解决方案是{-2}",为什么?在这两种情况下不应该是{1}吗?
标签: arrays algorithm performance