输入一个已经按升序排序过的数组和一个数字
在数组中查找两个数, 使得他们的和正好是输入的那个数字. 要求时间复杂度是O(n). 如果有多对数字的和等于输入数字, 输出任意一对即可
例如: 输入数组 1 2 4 7 11 15 和数字15. 由于4+11=15, 因此输出4 和 11
法一:
for(i = 0; i < 6; i++)
{
for(j = i; j < 6;j++)
{
if((buf[i] + buf[j]) == 15)
{
printf("%d %d\n", buf[i], buf[j]);
}
}
}
法二:
while(i < j)
{
if(buf[i] + buf[j] > 15)
{
j--;
}
else if(buf[i] + buf[j] < 15)
{
i++;
}
else if(buf[i] + buf[j] == 15)
{
printf("%d %d\n", buf[i], buf[j]);
i++;
}
}