先存map里再查找。
时间复杂度O(n)。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int>m;
int len=nums.size();
std::vector<int> v;
if(len<2)return v;
for(int i=0;i<len;i++)
{
m[nums[i]]++;
}
for(int i=0;i<len;i++)
{
int tmp=target-nums[i];
if((tmp!=nums[i]&&m[tmp]==1)||(tmp==nums[i]&&m[tmp]>1))
{
v.push_back(i);
}
}
return v;
}
};