[刷题] LeetCode 167 Two Sum II

落花浮王杯 提交于 2020-03-28 09:30:01

要求

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

示例

  • 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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!