题目:
给定单调递增的整数数组[n0, n1, n2,….,nk] array, 以及目标数T,边写一个算法existSum(array, T),来判定在数组array中,是否存在2个数p, q, 满足p + q = T. 该方法返回1如果存在,否则返回0
思路:
- 采用双指针的思路,指向第一个和最后一个。start和end,计算两个数的和all。
- all == T,返回true
- all < T,start++,all > T,end–
代码:
boolean findNUmberWithSum(int data[] ,int length,int T){
boolean found = false;
if(data == null || length < 1)return found;
int start = 0;
int end = length -1;
while(start < end){
int all = data[start]+data[end];
if(all == T){
found = true;
break;
}
if(all < T){
start++;
}
if(all > T){
end--;
}
}
return found;
}