面试题:和为 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;
}
}
}
本文介绍了一个算法问题:如何在一个递增排序的数组中找到两个数,使它们的和等于给定的数值S。通过双指针技巧,文章提供了一种高效的方法来解决这个问题,并附带了具体的Java实现代码。
4906

被折叠的 条评论
为什么被折叠?



