1.找出有序数组的两个数,使其值等于目标值
双指针法
package orc.shi.s;
import java.util.HashMap;
import java.util.Map;
public class test1 {
public static void main(String[] args) {
int [] arr= {1,2,3,4,5,6,7,8};
int target=10;
sum(arr,10);
}
//给定一个有序数组,返回相加等于给定值的两个数组合
public static void sum(int[] arr,int target) {
//双指针,小于等于左边动,大于右边动
//因为,如果小于,说明小值没办法和最大值组合成给定数所以左移,
//最大方向同理
for(int i=0,j=arr.length-1;i<j;) {
if(arr[i]+arr[j]==target) {
System.out.println("i:"+arr[i]+" "+"j:"+arr[j]+" ");
i++;
j--;
}else if(arr[i]+arr[j]<target) i++; else j--;
}
}
}
有重复元素的时候
package orc.shi.s;
import java.util.HashMap;
import java.util.Map;
public class test1 {
public static void main(String[] args) {
int [] arr= {1