原题是编程之美上的,数组无序。书上面的最优解法是先排序。。。所以有了这道题。
前提是有序,所以可以用O(n)解决。
即begin和end两个下标,往中间凑。如果sum满足输出。
如果大于目标,end--;
如果小于目标,begin++;
void sum_print(int* arr, int n, int sum)
{
int i, j;
for(i=0,j=n-1;i<j && i>=0 && j<n; )[......]
原题是编程之美上的,数组无序。书上面的最优解法是先排序。。。所以有了这道题。
前提是有序,所以可以用O(n)解决。
即begin和end两个下标,往中间凑。如果sum满足输出。
如果大于目标,end--;
如果小于目标,begin++;
void sum_print(int* arr, int n, int sum)
{
int i, j;
for(i=0,j=n-1;i<j && i>=0 && j<n; )[......]