[LeetCode] 167. Two Sum II - Input array is sorted

别说谁变了你拦得住时间么 提交于 2019-11-30 18:01:18

因为是已经排好序的array,所以用two pointer从两边往中间逼近,注意最后返回的下标 + 1

 1 /**
 2  * @param {number[]} numbers
 3  * @param {number} target
 4  * @return {number[]}
 5  */
 6 var twoSum = function(numbers, target) {
 7     // corner case
 8     if (numbers === undefined || numbers.length < 2) {
 9         return [-1, -1];
10     }
11 
12     // normal case
13     let start = 0;
14     let end = numbers.length - 1;
15     while (start < end) {
16         const sum = numbers[start] + numbers[end];
17         if (sum === target) {
18             return [start + 1, end + 1];
19         } else if (sum < target) {
20             start++;
21         } else {
22             end--;
23         }
24     }
25     return [-1, -1];
26 };

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!