这个是two sum 的变种,可以用hash_map, 是O(n)的空间复杂度,O(n)的时间复杂度。
但是考虑到ordered的性质,可以用双指针,空间复杂度可以下降到O(1).
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int i = 0;
int j = numbers.size()-1;
while(i < j){
if(numbers[i] + numbers[j] == target) return {i+1, j+1};
if(numbers[i] + numbers[j] < target) i++;
if(numbers[i] + numbers[j] > target) j--;
}
return {0,0};
}
};
本文介绍了一种解决有序数组中寻找两个数使它们的和等于特定目标值的问题的方法。通过使用双指针技巧,可以在O(n)的时间复杂度和O(1)的空间复杂度下高效解决此问题。
391

被折叠的 条评论
为什么被折叠?



