class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
int len = numbers.size();
vector<int> result={};
int i = 0, j = len-1;
while(i<j){
if(numbers[i] + numbers[j] < target){
i++;
}
else if(numbers[i] + numbers[j] > target){
j--;
}
else{
result.push_back(i+1);
result.push_back(j+1);
return result;
}
}
}
};
使用两个指针,第一个指针指向开头,第二个指向数组尾,两个指针所指向的值之和小于target时,左边的指针右移,反之右边的指针左移,之和等于target时返回两个指针的index。
本文介绍了一种解决两数之和问题的有效算法。通过使用双指针技术,该算法可以在O(n)的时间复杂度内找到目标值的索引。具体实现上,一个指针从数组起始位置开始,另一个从末尾开始,根据两数之和与目标值的大小关系调整指针位置。
397

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



