思路:map是关键。用map对另一个number的index进行映射。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> nums_map; //内部实现是基于哈希表,因此其查找速度非常的快
for (int i = 0; i < nums.size(); ++i){
//nums_map.insert(pair<int, int>(nums[i], i));
nums_map[nums[i]] = i; // 比上面写法速度更快些
}
vector<int> ans;
for (int i = 0; i < nums.size(); ++i){
int t = target - nums[i];
if (nums_map.count(t) && i != nums_map[t]){
ans.push_back(i);
ans.push_back(nums_map[t]);
break;
}
}
return ans;
}
};