Leetcode/NeetCode

[TwoPointers][Medium] 167. Two Sum II - Input Array Is Sorted

자전거통학 2024. 7. 9. 21:17

https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/

 

주어진 정수 배열이 정렬되어 있을 때, 두 수의 합이 target이 되는 1based index를 출력하라.

 

정렬되어 있으므로, left, right를 이용하여 수의 범위를 좁힌다. 

target보다 sum이 크면 작아져야 하므로, right를 낮춘다. 

target보다 sum이 작으면 커져야 하므로, left를 높힌다. 

 

코드 

더보기
vector<int> twoSum(vector<int>& numbers, int target) 
{
    int left = 0;
    int right = numbers.size() - 1;
    vector<int> vRet;
    while (left <= right)
    {
        int sum = numbers[left] + numbers[right];

        if (sum == target)
            return vector<int>{ left+1, right+1 };
        else if (sum > target)
            --right;
        else if (sum < target)
            ++left;
    }
    return vRet;
}

 

결과