题目:输入一个按升序排序的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。
要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。
例如输入数组1、2、3、4、7、11、12、15和数字15。由于4+11=15,因此输出4和11。
public static void IsExist(int[]myArr,int value)
{
int start = 0;
int end = myArr.Length-1;
if (!(myArr[end] > value / 2))
{
Console.WriteLine("such pairs not exits");
}
while (start < end)
{
if (myArr[start] + myArr[end] > value)
end--;
else
{
if (myArr[start] + myArr[end] < value)
{
start++;
}
else
{
Console.WriteLine("{0} + {1}= {2}", myArr[start], myArr[end], value);
break;
}
}
}
}