和为S的两个数字-Java实现
和为S的两个数字
http://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b
一. 思路
递增的排序数组,大概都可以用类似二分查找那样的双指针思路。采用双指针法
二. 代码
import java.util.ArrayList; public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> result = new ArrayList<>(); int i = 0, j = array.length-1; int ij = Integer.MAX_VALUE; while (i < j) { int sumV = array[i] + array[j]; // 和太大了,那就j-- if (sumV > sum) { j--; }else if (sumV < sum) { // 和太小了,那就i++ i++; }else { if (ij > i*j) { result.clear(); result.add(array[i]); result.add(array[j]); ij = i * j; } i++; } } return result; } }