class Solution {
public:
vectortwoSum(vector &numbers, int target) {
std::vectorret;
if(numbers.size() < 2) {
return ret;
}
std::unordered_map> hash;
for(size_t i = 0; i < numbers.size(); ++i) {
int number = numbers[i];
if(hash.count(number) == 1) {
hash[number].emplace_back(i);
} else {
std::vectorindex_hash;
index_hash.emplace_back(i);
hash.emplace(number, index_hash);
}
}
for(size_t i = 0; i < numbers.size(); ++i) {
int lkup_num = target - numbers[i];
if(hash.count(lkup_num) > 0) {
auto& index = hash[lkup_num];
for(auto ind: index) {
if(ind != i) {
ret.emplace_back(i + 1);
ret.emplace_back(ind + 1);
}
}
}
}
return ret;
}
};
3/29/2014
Leetcode -- Two Sum
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment