美文网首页
剑指offer | 和为s的两个数字

剑指offer | 和为s的两个数字

作者: icebreakeros | 来源:发表于2019-07-31 12:06 被阅读0次

和为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;
    }
}

相关文章

网友评论

      本文标题:剑指offer | 和为s的两个数字

      本文链接:https://www.haomeiwen.com/subject/pepzrctx.html