和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s
示例
输入:{0, 1, 2, 4, 7, 11, 15}
和15
输出:true
思路:数组中选择两个数字,如果它们的和等于输入值s,则输出(或者返回true);如果它们的和小于s,我们希望它们的和大一些,则考虑较小数字后面的数字;如果它们的和大于s,则考虑较大数字前面的数字
public class TwoNumbersWithSum {
public boolean findNumbersWithSum(int[] numbers, int s) {
boolean result = false;
if (Optional.ofNullable(numbers).isEmpty() || numbers.length <= 0) {
return result;
}
int start = 0;
int end = numbers.length - 1;
while (start < end) {
int add = numbers[start] + numbers[end];
if (add == s) {
result = true;
System.out.println("start = " + numbers[start]
+ ", end = " + numbers[end]);
start++;
end--;
} else if (add > s) {
end--;
} else {
start++;
}
}
return result;
}
}
网友评论