class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector<int>tem=numbers;
sort(tem.begin(),tem.end(),less<int>());
vector<int>::iterator i=tem.begin();
vector<int>::iterator j=tem.end()-1;
while((*i+*j)!=target)
{
if((*i+*j)>target) j--;
else i++;
}
vector<int> result;
result.push_back(find(numbers.begin(),numbers.end(),*i)-numbers.begin()+1);
result.push_back(numbers.rend()-find(numbers.rbegin(),numbers.rend(),*j));
sort(result.begin(),result.end());
return result;
}
};
复杂度o(nlogn)
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
unordered_map<int, bool> m;
for (int i = 0; i < numbers.size(); ++i)
m[numbers[i]] = false; // initialization
for (int i = 0; i < numbers.size(); ++i)
{
if (m[target - numbers[i]])
{
int j;
for (j=0; j < i && numbers[j]!=target-numbers[i]; j++);
vector<int> result {j+1, i+1};
return result;
}
m[numbers[i]] = true;
}
}
};
复杂度o(n),关于unordered_map(boost),map,hash_map比较见链接
http://blog.chinaunix.net/uid-20384806-id-3055333.html