面试题:和为 s 的两个数字 VS 和为 s 的连续正数序列
题目一:输一个递增排序的数组和一个数字 s,在数组中查找两个数使得它们的
和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。例如:输入数组
{1,2,4,7,11,15}和数字为 15.输出 4 和 11.
思路:不考虑时间复杂度的话
因为是递增数组,则定位起始位置,start以及end
若两个起始位置各自对应的数组元素的和小于指定的数,则start+1
否则end-1
题目一:输一个递增排序的数组和一个数字 s,在数组中查找两个数使得它们的
和正好是 s。如果有多对数字的和等于 s,输出任意一对即可。例如:输入数组
{1,2,4,7,11,15}和数字为 15.输出 4 和 11.
思路:不考虑时间复杂度的话
因为是递增数组,则定位起始位置,start以及end
若两个起始位置各自对应的数组元素的和小于指定的数,则start+1
否则end-1
public class ArrayTwoElementSumEqualNum_1 {
public static void main(String[] args){
int[] a={1,2,4,7,11,15};
find(a,15);
}
public static void find(int[] arr,int num)throws RuntimeException
{
if(num<=arr[0]||num>=arr[arr.length-1]||arr.length<2||arr==null)
System.out.println("输入错误");
int start=0,end=arr.length-1;
while(start<end){
int temp=arr[start]+arr[end];
if(temp>num)
end--;
if(temp<num)
start++;
if(temp==num){
System.out.println("这两个元素是"+arr[start]+"和"+arr[end]);
break;
}
}
}