题目:

算法思想:因为数组是有序的,只需要从数组头部和尾部向中间扫描,如果两个数和大于target,则需要尾指针前移。若是小于target,则头指针后移,注意下标是从1开始的。
代码:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int> result;
int begin = 0;
int end = numbers.size()-1;
while(begin < end)
{
if(numbers[begin] + numbers[end] == target)
{
result.push_back(begin+1);
result.push_back(end+1);
break;
}
else if(numbers[begin] + numbers[end] > target)
end--;
else
begin++;
}
return result;
}
本文介绍了一种解决有序数组中寻找两个数使它们的和等于特定目标值的问题的算法。通过双指针技巧,从数组两端向中间逼近,实现高效查找。此算法适用于排序后的数组,提供了一个简洁的C++代码实现。
982

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



