1.题目

2.解法
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> aList = new ArrayList<>();
if(array == null || array.length < 2){
return aList;
}
int i = 0;
int j = array.length - 1;
long add = 0l;
while(i < j){
add = array[i] + array[j];
// 最外围的乘积最小
if(add == sum){
aList.add(array[i]);
aList.add(array[j]);
return aList;
}else if(add > sum){
--j;
}else{
++i;
}
}
return aList;
}
}
时间复杂度为O(n),空间复杂度为O(1)
本文介绍了一种在数组中寻找两个数使它们的和等于特定值的算法。使用双指针技术,从数组两端开始向中间搜索,实现了O(n)的时间复杂度和O(1)的空间复杂度。
4901

被折叠的 条评论
为什么被折叠?



