思路一:
暴力思路:遍历两遍;O(n2)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int> res;
for(int i = 0; i < num.size(); i++)
{
for(int j = 0; j < i; j++)
{
if(num[i] + num[j] == target)
{
res = vector<int>({j, i});
break;
}
}
if(res.size() > 0) break;
}
return res;
}
};
思路二:
哈希表,循环一遍,在每步循环中,判断target-nums[i]是否在哈希表中,并将nums[i]插入哈希表中;O(n)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int> res;
unordered_map<int, int> hash;
for(int i = 0; i < nums.size(); i ++ )
{
int a = target - nums[i];
if(hash.count(a))
{
res = vector<int>({hash[a], i});
break;
}
hash[nums[i]] = i;
}
return res;
}
};