题解 | 和为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; } }
利用两个指针,一个指头部,一个指尾部,在循环中不断判断是否满足条件,满足条件则直接返回,不满足则更新指针。