思路一:
排序夹逼:把数组排好序,使用两个指针,begin = 0,end = n -1;
从两头向中间扫描
如果 a[begin] + a[end] < sum ; 让begin++ ,end 不动
如果a[begin] + a[end] > sum ; 让 end-- ,begin 不动
void TwoSum(int S[],int N,int Sum)
{
int begin,end,currSum;
begin = 0;
end = N-1;
while(begin<end)
{
currSum = S[begin] + S[end];
if(currSum == Sum)
{
cout<<S[begin]<<" "<< S[end]<<endl;
begin++;end--;
}
else
{
if(currSum<Sum)
{
begin++;
}
else
{
end--;
}
}
}
}