您的位置:首页 > 其它

有序数组中查找两个数的和为指定数

2018-01-23 14:57 267 查看
题目:输入一个升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n),如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。

public class ArraySum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] inputStr = scanner.nextLine().split(" ");
int[] array = new int[inputStr.length];
for (int i = 0; i < inputStr.length; i++) {
array[i] = Integer.valueOf(inputStr[i]);
}
int start = 0;
int end = array.length - 1;
int inputSum = scanner.nextInt();
boolean isFind = false;
while (start < end) {
int sum = array[start] + array[end];
if (sum == inputSum) {
isFind = true;
break;
} else if (sum > inputSum) {
end--;
} else {
start++;
}
}
if (isFind) {
System.out.println(array[start] + "+" + array[end] + "=" + inputSum);
} else {
System.out.println("not find,please check!");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐