和為S的兩個數字java實現
阿新 • • 發佈:2018-12-31
輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,是的他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。
思路:利用夾逼演算法,要兩個數乘積最小,則應該是最小的和最大的那兩個數。然後夾擊遍歷陣列,找到乘積等於sum的數則返回,否則遞減或遞增繼續查詢。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> result=new ArrayList<Integer>();
int length=array.length;
int i=0,j=length-1;
while(i<=j){
if(array[i]+array[j]<sum){
i++;
continue;
}
if(array[i]+array[j]>sum){
j--;
continue ;
}
if(sum==(array[i]+array[j])){
result.add(array[i]);
result.add(array[j]);
return result;
}
}
return result;
}
}