文章目录
所有题目源代码:[Git地址](https://github.com/ch98road/leetcode)题目方案:复杂度计算
所有题目源代码:Git地址
题目
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明
:
返回的下标值(index1 和 index2)不是从零开始的。
你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例
:
输入
: numbers
= [2, 7, 11, 15], target
= 9
输出
: [1,2]
解释
: 2 与
7 之和等于目标数
9 。因此 index1
= 1, index2
= 2 。
方案:
#include
<iostream>
#include
<string>
#include
<stack>
#include
<vector>
using namespace
::std
;
class Solution
{
public:
vector
<int> twoSum(vector
<int> &numbers
, int target
)
{
int len
= numbers
.size();
int left
= 0,right
= len
- 1;
while(left
<right
){
if (numbers
[left
]+numbers
[right
]>target
)
{
right
--;
}else if(numbers
[left
]+numbers
[right
]<target
){
left
++;
}
else
{
return vector
<int>{left
+1,right
+1};
}
}
return vector
<int>{0, 0};
}
};
int main()
{
Solution s
;
int a
[] = {5,25,75};
vector
<int> num(a
, a
+ 3);
int target
= 9;
s
.twoSum(num
, target
);
}
复杂度计算
时间复杂度:O(n)空间复杂度:O(1)