给定一个整数数组,从数组中给出两个整数,其加法给出一个数字N。
答案 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可以减少。