1. 程式人生 > >leetcode 167. 兩數之和 II - 輸入有序數組(Two Sum II - Input array is sorted)

leetcode 167. 兩數之和 II - 輸入有序數組(Two Sum II - Input array is sorted)

else get () 返回 div 目標 href 有序數組 twosum

目錄

  • 題目描述:
  • 示例:
  • 解法:

題目描述:

給定一個已按照 升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。

函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。

說明:

  • 返回的下標值(index1 和 index2)不是從零開始的。
  • 你可以假設每個輸入只對應唯一的答案,而且你不可以重復使用相同的元素。

示例:

    輸入: numbers = [2, 7, 11, 15], target = 9
    輸出: [1,2]
    解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

解法:

class Solution {
public:
    vector<int> twoSum(vector<int>& numbers, int target) {
        int l = 0;
        int r = numbers.size() - 1;
        int val = 0;
        while(l < r){
            val = numbers[l] + numbers[r];
            if(val < target){
                l++;
            }else if(val == target){
                return {l+1, r+1};
            }else{
                r--;
            }
        }
        return {-1, -1};
    }
};

leetcode 167. 兩數之和 II - 輸入有序數組(Two Sum II - Input array is sorted)