使用双指针法,记住,这个数组是升序的
代码如下:
package com.likou;
import java.util.Arrays;
/**
* 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
*/
public class test57 {
public static void main(String[] args) {
int[] nums = new int[]{2,7,11,15};
int targer = 9;
int[] re = new int[2];
re = fun(nums,targer);
System.out.println(Arrays.toString(re));
}
/**
* 数组是升序的,使用双指针的方法
* @param nums
* @param targer
* @return
*/
private static int[] fun(int[] nums, int targer) {
int[] re = new int[2];
int left = 0;
int right = nums.length-1;
while (left<right){
// 相等的时候就退出
if (nums[left]+nums[right] == targer){
re[0] = nums[left];
re[1] = nums[right];
return re;
}else if (nums[left]+nums[right] < targer){
left++;
}else {
right--;
}
}
return re;
}
}