要求
- 升序数组
- 找到两个数使得它们相加之和等于目标数
- 函数返回两个下标值
示例
- numbers = [2, 7, 11, 15], target = 9
- [1,2]
- index1 = 1, index2 = 2
思路
- 双重遍历(n2)
- 遍历+二分搜索(nlogn)
- 遍历,对撞指针(n)
代码

1 class Solution{
2 public:
3 vector<int> twoSum(vector<int>& numbers, int target){
4
5 int l = 0, r = numbers.size()-1;
6 while( l < r ){
7
8 if(numbers[l]+numbers[r]==target){
9 int res[2] = {l+1, r+1};
10 return vector<int>(res,res+2);
11 }
12 else if(numbers[l]+numbers[r]<target)
13 l++;
14 else
15 r--;
16 }
17 throw invalid_argument("no solution.");
18 }
19 };
类似问题
- 125 Valid Palindrome
- 344 Reverse String
- 345 Reverse Vowels of a String
- 11 Container With Most Water
来源:https://www.cnblogs.com/cxc1357/p/12585650.html
