《劍指offer》系列 和為S的兩個數字(Java)
阿新 • • 發佈:2018-12-01
連結
牛客:和為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; } }