遍历O(n^2)能过,但可以O(n)过, 维护一个map,如果当前map中没有当前数字,就将target-当前数字和下标存入map中,否则返回当前数字下标和target-当前数字的下标
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int,int>hash;
vector<int>ans;
for(int i=0;i<nums.size();i++)
{
if(hash.find(target-nums[i])!=hash.end())
{
ans.push_back(hash[target-nums[i]]);
ans.push_back(i);
return ans;
}
hash[nums[i]]=i;
}
return ans;
}
};
只需遍历一次