##題目描述 輸入一個遞增排序的陣列和一個數字S,在陣列中查找兩個數,使得他們的和正好是S,如果有多對數字的和等于S,輸出兩個數的乘積最小的, 輸出描述: 對應每個測驗案例,輸出兩個數,小的先輸出,
思路
符合條件的答案中,距離最遠的一對數字的乘積最小(周長固定的矩形中正方形面積最大),設定左右指標往中間逼近,
時間復雜度O(n),空間復雜度O(1),
代碼
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list = new ArrayList<Integer>();
if(array == null || array.length == 0) return list;
int left = 0, right = array.length - 1;
int curr = 0;
while(left < right) {
curr = array[left] + array[right];
if(curr == sum) {
list.add(array[left]);
list.add(array[right]);
break;
} else if(curr < sum) {
left++;
} else {
right--;
}
}
return list;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/83492.html
標籤:其他
上一篇:和為S的連續正數序列
