解题思路
1.先将目标数组存入map映射,元素值与下标一一对应
2.遍历数组元素,判断target—nums【i】 是否存在(map里count())
3放回能够存在的下标
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
std::vector<int> ans;
std::unordered_map<int,int> m;
for(int i=0;i<nums.size();++i)
{
m[nums[i]]=i;
}
`
for(int i=0;i<nums.size();++i)
{
int t=target-nums[i];
if(m.count(t)&&m[t]!=i) //注意这里一定不能反了 先判断count()在判断m[t] 应为m【t】t可能任意数 导致map越界
{
ans.push_back(i);
ans.push_back(m[t]);
break;
}
}
return ans;
}
};