解法一:没有用到已排序属性
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
map<int,int>m;
map<int,int>::iterator iter;
vector<int>ret;
for(int i=0;i<numbers.size();i++)
{
iter=m.find(target-numbers[i]);
if(iter!=m.end())
{
ret.push_back(iter->second+1);
ret.push_back(i+1);
}
m.insert(pair<int,int>(numbers[i],i));
}
return ret;
}
};
解法二
class Solution {
public:
vector<int> twoSum(vector<int>& numbers, int target) {
vector<int>ret;
int l=0;
int r=numbers.size()-1;
while(l<r)
{
if(numbers[l]+numbers[r]==target)
{
ret.push_back(l+1);
ret.push_back(r+1);
return ret;
}
if(numbers[l]+numbers[r]>target)
{
r--;
}
else
{
l++;
}
}
return ret;
}
};