第二次把这道题解出来
上次知识两次for循环遍历求解,还是看了答案之后才写出来的
这次看到就知道可以暴力求解了,但除了这个是没有别的思路的,
然后瞟到了标签“哈希表”,用map?
可以的
方法
遍历,同时建立map<int,int>,key是target-nums[i],value是i,也就是元素在数组中的位置,这样遍历时在map中寻找key值与当前元素相等的,也就是当前位置元素等于target-nums[i],所以就找到了和为target的两个元素。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int>maps;//建立map关系
vector<int>result;//用于返回的数组
for(int i=0;i<nums.size();++i){
if(maps.find(nums[i])!=maps.end()){//如果找到,准备返回
result.push_back(maps[nums[i]]);
result.push_back(i);
return result;
}
else
maps.insert({target-nums[i],i});//,没找到,就将此元素添加到map中
}
return result;
}
};