输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,若是有多对数字的和等于S,输出两个数的乘积最小的。

import java.util.ArrayList;java

public class Solution {code

public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
    
    ArrayList<Integer> list = new ArrayList<Integer>();
    
    int len=array.length-1;
    if(len<2)
        return list;
    
    int left=0;
    int right=len;
    
    int total= array[left]+array[right];
    while(left<right){
        while(total<sum&&left<right)
            total=array[right]+array[++left];
        
        while(total>sum&&right>left)
            total=array[left]+array[--right];
       
        if(total==sum)
            break;
    }
    
    if(left==right)
        return list;
    
    list.add(array[left]);
    list.add(array[right]);
   
    return list;
}

}it

相关文章
相关标签/搜索