前言
仅记录学习笔记,如有错误欢迎指正。
题目
输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可
示例:
-
输入:[1,2,4,7,11,15],15
-
输出: [4,11]
-
输入:[1,5,11],10
-
输出: []
解法
有序数据应该要想到双指针!import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list = new ArrayList<>();
if(array == null || array.length ==0){
return list;
}
int l = 0;
int r = array.length-1;
while(l < r){
int sum1 = array[l] + array[r];
if(sum1 == sum ){
list.add(array[l]);
list.add(array[r]);
return list;
}else if(sum1 < sum){
l++;
}else{
r--;
}
}
return list;
}
}