1. 程式人生 > >劍指offer -- 和為 S 的兩個數字

劍指offer -- 和為 S 的兩個數字

題目描述

輸入一個遞增排序的陣列和一個數字S,在陣列中查詢兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。

AC程式碼

思路雖然很簡單,但是需要注意的地方有很多。
繼續努力。

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        if(array == null && array.length <=
1) return null; ArrayList<Integer> resList = new ArrayList<>(); int product = Integer.MAX_VALUE; // 1 int low = 0; int high = array.length - 1; Integer num1 = null; //2 Integer num2 = null; //2 while(low < high){ if(array[
low] + array[high] == sum){ if(array[low] * array[high] < product){ num1 = array[low]; num2 = array[high]; product = num1 * num2; } low++; //3 high--; //3 } else
if(array[low] + array[high] < sum) low++; else high--; } if(num1 != null && num2 != null){ //4 resList.add(num1); resList.add(num2); } return resList; } }