求有序数组中和为sum的一组数

592 阅读1分钟

题目

找出有序数组(从小到大排列)中和为sum的两个数,要求复杂度为O(n),找到一组即可。

解析

这个题目主要是要抓住有序这个条件去是的时间复杂度尽量的低

let findSum = function(numbers, target) {
    let l = 0
    let r = numbers.length - 1;
    while(l < r) {
        if (numbers[l] + numbers[r] === target) {
            let res = [numbers[l], numbers[r]];
            return res;
        } else if (numbers[l] + numbers[r] < target) {
            l ++;
        } else {
            r --;
        }
    }
};