問題描述
5, 5,-7, 5, 9, -1, 5, 1, 9, 4, 6 這堆數中兩個數的和為10的組合有:5+5, 9+1, 4+6,如何快速的找出這樣的組合?
假定
數組a[]存放元素,數組大小為len_a
指定和為aim
思路一
先排序,low=0(最低位置),up=len_a(最高位置)
當a[low]+a[up]>aim時,hig=high-1
當a[low]+a[up]<aim時,low=low+1
當a[low]+a[up]=aim時,輸出a[low]、a[up]
代碼:


思路二
思路:


問題擴充
已知兩個升序數組,從兩個數組中各取一個數值,求使得兩個數之和為給定值的所有組合。
問題本質和一位數組一樣,一個從一個數組的開始前進,一個從另外一個數組的最後後退。
本文轉自jihite部落格園部落格,原文連結:http://www.cnblogs.com/kaituorensheng/p/3171953.html,如需轉載請自行聯系原作者