题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
package new_offer; import java.util.ArrayList; /** * 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数, 使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。 * @author Sonya * */ public class N42_FindNumbersWithSum { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> list=new ArrayList<Integer>(); int len=array.length; int head,tail; head=0; tail=len-1; while(tail>head) { if((array[head]+array[tail])==sum) { list.add(array[head]); list.add(array[tail]); head++; break; }else if((array[head]+array[tail])>sum) { tail--; }else { head++; } } return list; } public void findnumbers(int array[],int sum) { int len=array.length; int head,tail; head=0; tail=len-1; while(tail>head) { if((array[head]+array[tail])==sum) { System.out.print(array[head]); System.out.print(" "); System.out.println(array[tail]); head++; }else if((array[head]+array[tail])>sum) { tail--; }else { head++; } } } public static void main(String[] args) { // TODO Auto-generated method stub int []array= {1,2,4,7,11,15}; N42_FindNumbersWithSum n42=new N42_FindNumbersWithSum(); n42.findnumbers(array, 15); } }