167. Two Sum II - Input Array Is Sorted 풀이 - js

fgStudy·2022년 6월 1일
0

코딩테스트

목록 보기
37/69
post-thumbnail

해당 포스팅은 릿코드 167번 Two Sum II - Input Array Is Sorted 풀이를 다룬다. 문제 링크
코드는 javascript로 작성하였으며 투포인터 문제이다.


문제

Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= index1 < index2 <= numbers.length.

Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2.

The tests are generated such that there is exactly one solution. You may not use the same element twice.

Your solution must use only constant extra space.

내림차순 정렬된 numbers 배열과 정수인 target이 주어진다.
더했을 때 target과 값이 같은 배열의 두 숫자를 찾아, 두 숫자의 index에 1을 더한 숫자들을 배열로 반환하라.

일정한 extra space만 사용해라(추가로 space 생성 x).


예제

Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2].
Input: numbers = [2,3,4], target = 6
Output: [1,3]
Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3].
Input: numbers = [-1,0], target = -1
Output: [1,2]
Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2].

전체 코드

/**
 * @param {number[]} numbers
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(numbers, target) {
    s = 0;
    e = numbers.length-1;
    
    while (s < e) {
        sum = numbers[s] + numbers[e];
        if (sum === target) break;
        
        if (sum > target) e-=1;
        else if (sum < target) s+=1;
    }
    return [s+1, e+1];
};
profile
지식은 누가 origin인지 중요하지 않다.

0개의 댓글