美文网首页
剑指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