数组处理算法

时间:2011-01-09 22:37:52

标签: java arrays

给定一个整数数组,从数组中给出两个整数,其加法给出一个数字N。

2 个答案:

答案 0 :(得分:2)

最近在ihas1337code博客上介绍了这一点。有关解决方案,请参阅评论部分。

基本上解决这个问题的最有效方法是将数字放在hash_map中,然后在hash_map中存在元素(N-x)的情况下第二次循环遍历数组。

你可以从那里优化一点,但这是一般的想法。

答案 1 :(得分:0)

请按照以下步骤操作:

1.使用合并排序在O(n logn)中按降序排序数字(也可以升序,但对于此文本假设它们按降序排序)。

2.使用两个指针变量,一个指向起始元素(比如p1),另一个指向最后一个元素(比如p2)。

3.现在添加* p1 + * p2(temp_sum = * p1 + * p2)并将其与所需总和进行比较

重复这些步骤,直到p1> p2

i。如果总和== temp_sum那么我们的工作就结束了。

ii。如果总和> temp_sum然后减小p2使其指向一个更大的值然后它的当前值,以便temp_sum可以增加。

iii。如果总和< temp_sum然后减小p1使其指向一个小于其当前值的值,以便temp_sum可以减少。