class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> hash;
vector<int> result;
for (vector<int>::size_type index = 0; index != nums.size(); ++index) {
auto it = hash.find(target - nums[index]);
if (it != hash.end()) {
result.push_back(it->second);
result.push_back(index);
break;
}
hash[nums[index]] = index;
}
return result;
}
};
本题的思想是用哈希容器map存储数据及其下标,因为map的find()复杂度为O(1),
所以整个程序的复杂度为O(n)。