题解 | 和为S的两个数字
和为S的两个数字
https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b
import java.util.*;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> result=new ArrayList<>();
if(array==null||array.length<2) return result;
int left=0,right=array.length-1;
while(left<right){
int t=array[left]+array[right];
if(t==sum){
result.add(array[left]);
result.add(array[right]);
return result;
}else if(t>sum){
right--;
}else left++;
}
return result;
}
}
利用两个指针,一个指头部,一个指尾部,在循环中不断判断是否满足条件,满足条件则直接返回,不满足则更新指针。
查看20道真题和解析