
使用双指针法,记住,这个数组是升序的
代码如下:
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;
}
}
本文介绍了一种在已排序数组中寻找两数之和等于特定目标值的有效算法——双指针法。通过实例演示了如何从数组两端开始,逐步向中间逼近,直至找到符合条件的两个数或确认不存在这样的数对。
1165

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



