有序数组中查找两个数的和为指定数
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!");
}
}
}
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!");
}
}
}
相关文章推荐
- 在有序数组中查找两个数的和为指定数
- 面试100题:14.求在有序数组中查找两个数的和为指定数
- 面试100题:14.求在有序数组中查找两个数的和为指定数
- 找出有序数组中和等于指定数的两个数
- 输入一个有序数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字
- 查找有序数组中等于给定值的两个数
- 循环有序数组中查找指定值
- 在一个二维有序数组中,查找指定的数据是否存在
- merge两个有序数组 & 查找一个有序数组中指定元素
- 在有序数组中查找两个数,使得它们的和正好是输入的那个数字。时间复杂度O(n)
- 笔试面试之有序数组中查找和为定值的两个数
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 整数型的有序递增数组循环右移x位后,查找指定整数 算法
- KT学算法(二)——循环有序数组查找指定元素
- 旋转有序数组的二分查找
- 查找某个整数是否在数组中(数组为有序)
- LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)
- 《剑指offer》-在数组中查找两个数,使它们的和刚好为s
- 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- 从有序数组中查找key第一次出现的位置以及出现的所有位置