0
点赞
收藏
分享

微信扫一扫

[leetcode] 167. Two Sum II - Input array is sorted


Description

Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

Note:

  • Your returned answers (both index1 and index2) are not zero-based.
  • You may assume that each input would have exactly one solution and you may not use the same element twice.
    Example:

Input:

numbers = [2,7,11,15], target = 9

Output:

[1,2]

Explanation:

The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.

分析

题目的意思是:在一个数组中找出两个数,使得其和为target。

  • 这是一个简单的题目。
  • 开始写了一个O(n^2)的解法,后面查资料还有O(n)的解法,果断学习了,就是一个夹逼的过程。

代码

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

参考文献

​​[LeetCode] Two Sum II - Input array is sorted 两数之和之二 - 输入数组有序​​


举报

相关推荐

0 条评论