【剑指offer-JZ57】和为S的两个数字

56 阅读1分钟

提示是递增的,就从两头向中间逼近 还规定乘机最小,这个不用多虑,若a+b=sum,那么a和b越远乘积越小。这样就满足最先搜索到的组合,他俩的乘积就越小.

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        ArrayList<Integer> list = new ArrayList<>();
        int left = 0;
        int right=array.length-1;
        
        while(left<right){
            if(array[left] + array[right] == sum){
                list.add(array[left]);
                list.add(array[right]);
                break;
            }
            else if (array[left] + array[right] > sum) right--;
            else if (array[left] + array[right] < sum) left++;
        }
        return list;
     
    }
}


题源:www.nowcoder.com/practice/39…