和为S的两个数字

题目描述

输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

分析

数组本来就排序好了,很简单。两个指针,刚开始i在最左边,j在最右边。如果两数想加小于S,i++;如果两数想加大于S,j–;

代码:

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

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :