【2019/03/03】
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
Note:
Your returned answers (both index1 and index2) are not zero-based.
You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:

【思路】:
- 由于数组已经排好序了,利用升序的性质,用O(n)的时间复杂度完成;
- 用两个指针left和right分别指向数组的第一个和最后一个元素
- 当tmp = target的时候就返回两个值的索引值;
- 当tmp < target的时候,左值 ++;
- 当tmp > target的时候,右值 --;
- 返回的时候indices的值都要+1(因为题目要求不能是zero-based)
【代码如下】
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target)
{
vector<int> ret(2, -1);
int left = 0;
int right = numbers.zise - 1;
while( left < right )
{
int tmp = numbers[left] + numbers[right];
if( tmp == target)
{
ret[0] = left + 1;
ret[1] = right + 1;
break;
}
else if (tmp < target)
{
left ++;
}
else
right--;
}
return ret;
}
};

本文介绍了一种在已排序的整数数组中寻找两个数使其和等于特定目标值的算法。通过使用双指针技术,该算法能在O(n)的时间复杂度内找到满足条件的两个数,并返回它们的索引。
397

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



