两数之和
思路
- 用map->first保存数组的值,map->second保存数组的索引
- 用map.find(map[target - nums[i]]) != map.end() 去判断是否存在两数和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int> a;
vector<int> res;
for (int i = 0; i < nums.size(); i++) {
a[nums[i]] = i;
}
for (int i = 0; i < nums.size(); i++) {
auto iter = a.find(target - nums[i]);
if (iter != a.end() && iter->second != i) {
return {iter->second, i};
}
}
return {};
}
};
问题
- 思路简单,但是到我写的时候,我就连怎么初始化都忘了,最后复习知识加改错花了50分钟
- 然后一直错在map的insert上,不能insert(nums[i], i);
- insert(pair<int, int>(nums[i], i))
- insert({nums[i], i})
- map[nums[i]] = i;
- 还有一个错误就是,我没有排除自身的情况,导致结果出错。