《剑指offer第二版》面试题57:和为s的两个数字(java)

2020-02-28  本文已影响0人  castlet

题目描述

解题思路

  1. 分别用两个指针begin和end指向数组A的开头和尾部。
  2. 如果A[begin] 和A[end] 的和大于s,由于数组是排好序的,则end 减一。
  3. 如果和小于s,则begin加1。
  4. 如果和等于s,则找到数字返回。

代码

int[] findNumberWithSum(int[] arrs, int sum) {
    if (arrs == null || arrs.length <= 1) {
        return null;
    }
    int beginIndex = 0;
    int endIndex = arrs.length - 1;

    while (beginIndex < endIndex) {
        if (arrs[beginIndex] + arrs[endIndex] > sum) {
            endIndex--;
        } else if (arrs[beginIndex] + arrs[endIndex] < sum) {
            beginIndex ++;
        } else {
            return new int[] {arrs[beginIndex], arrs[endIndex]};
        }
    }
    return null;
}
上一篇 下一篇

猜你喜欢

热点阅读