LeetCode167. Two Sum II - Input array is sorted

题目描述:

给定已按升序排序的整数数组,找到两个数字,使它们相加到特定的目标数。

函数twoSum应返回两个数字的索引,以便它们加起来到目标,其中index1必须小于index2。

  • 您返回的答案(index1和index2)不是从零开始的。
  • 您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。

Example1

Input: numbers = [2,7,11,15], target = 9
Output:  [1,2]
Explanation: 2和7之和为9.因此index1 = 1,index2 = 2。

C++输入格式

class Solution {
public:
    vector twoSum(vector& numbers, int target) {
        
    }
};

范例

class Solution {
public:
    vector twoSum(vector& numbers, int target) {
        int l = 0;
        int r = numbers.size() -1;
     
        while(l < r){
            if(numbers[l] + numbers[r] == target){
                //vector res={l+1,r+1};//列表初始化的括号是花括号 这两种方式都可以
                return {l+1,r+1};
            }
            else if(numbers[l] + numbers[r] > target){
                r--;
            }
            else{
                l++;
            }
        }
        //return {};
    }
};

main()

int main() {
    vector vec;
    vector myvector;
    int i=0; 
    int a[10]={0,1,2,3,4,8};
    int target = 5;
    for(i=0;i<6;i++)
    {
       vec.push_back(a[i]);
    }

    vector::iterator pos;
    //声明一个迭代器,来访问vector容器。作用:遍历或指向vector容器的元素 
    cout<<"输入数组:";
    for(pos = vec.begin();pos!=vec.end();pos++)
    {
        cout<<*pos<<" ";
    } 
    cout<

测试样例

image.png

这道题比较简单,因为数组是按照升序排列的,所以从数组的两端不断往中间遍历就可以找到很快找到目标索引号。但是这里值得注意的一个点是:索引号是从1开始的。

你可能感兴趣的:(LeetCode167. Two Sum II - Input array is sorted)