题目地址:
https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/
给定一个长 n n n的升序数组 A A A,问是否存在两个数之和等于给定的数 t t t。返回两个数的下标(下标从 1 1 1开始)。题目保证一定有唯一解。
代码如下:
class Solution {
public:
vector<int> twoSum(vector<int>& a, int t) {
for (int i = 0, j = a.size() - 1; i < j; ) {
if (a[i] + a[j] < t) i++;
else if (a[i] + a[j] > t) j--;
else return {i + 1, j + 1};
}
return {};
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。