1. 程式人生 > >和為S的兩個數字java實現

和為S的兩個數字java實現

輸入一個遞增排序的陣列和一個數字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; } }