o(n)解法
和为S的两个数字
http://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b
import java.util.*; public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> res = new ArrayList<>(); if (array == null || array.length < 1) { return res; } Set<Integer> set = new HashSet<>(); for (int i = 0; i < array.length; i++) { set.add(array[i]); } int min = Integer.MAX_VALUE; for (int i = 0; i < array.length; i++) { int multi = sum - array[i]; if (set.contains(multi) && min > (array[i] * (multi))) { min = array[i] * (multi); if (array[i] < multi) { res.add(0, array[i]); res.add(1, multi); } else { res.add(0, multi); res.add(1, array[i]); } } } return res; } }