数组中的数字添加到特定数字java

时间:2013-04-15 16:10:24

标签: java

检查数组中的任何数字是否总结为特定数字的最有效方法是什么:例如:(5,3,3,9,4)数组我想知道这些数字中是否有任何数字可以添加数组以给出10 当我添加(3,3,4)

时会发生这种情况

1 个答案:

答案 0 :(得分:0)

我现在必须花费更多的时间来提出一个非常好的解决方案,但我建议重新考虑你的策略。正如@DeepakBala所提到的,你正在描述NP完全问题。

使得与众不同的一点是,总和(Q)可以显着大于数组中的数字。此外,由于它们被限制在3到150之间,当你有2000个数字时,你会有很多重复。利用这个优势 - 在使用它们之前计算数字,你只需要担心149种数字。

为了让您思考为何重要,请考虑排序100万个数字1-100。只需创建一个数组,然后计算您看到每个数字的次数。然后通过打印出适当次数的每个数字来重新创建列表。这是O(n)而不是正常的O(n log(n))。

不要使用最多2000个数字的数组,而应考虑150个数组,它们会告诉您可用的每种尺寸的数量以及您使用的每种尺寸的数量。

尝试添加所有大号,直到你得到Q的150,然后看看你是否有任何完全弥补差异。如果失败了,你将不得不弄清楚如何去那里。