[刷题] LeetCode 167 Two Sum II

要求

  • 升序数组
  • 找到两个数使得它们相加之和等于目标数
  • 函数返回两个下标值

示例

  • 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 };
View Code

类似问题

  • 125 Valid Palindrome 
  • 344 Reverse String
  • 345 Reverse Vowels of a String
  • 11 Container With Most Water

猜你喜欢

转载自www.cnblogs.com/cxc1357/p/12585650.html