剑指 Offer 57. 和为s的两个数字

Posted on 2022-03-15 15:16  AcTourist  阅读(32)  评论(1)    收藏  举报

一、题目

 

二、分析

  1.双指针:在一个递增数组里,一头 i 指向数组里的最小值,一头 j 指向数组里的最大值,当 i + j 的值大于目标值,说明 j 的当前数组太大,要向左边递减,反之小于目标值,i 的当前数组太小,要向右边递增。

三、代码

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
   let i = 0;
   let j = nums.length-1;

   while( i<j ){
       if( nums[i] + nums[j] === target) return [nums[i],nums[j]];
       if( nums[i] + nums[j] > target) j--;
       else i++;
   }

    return null;
};