1. 程式人生 > >《劍指offer》系列 和為S的兩個數字(Java)

《劍指offer》系列 和為S的兩個數字(Java)

連結

牛客:和為S的兩個數字

題目描述

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

輸出描述:

對應每個測試案例,輸出兩個數,小的先輸出。

思路

初始化兩個指標分別是第一個和最後一個,然後從兩邊向中間不斷查詢。

程式碼

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