输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
题解一:暴力,太慢了
class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int>a;
for (int i = 0; i < nums.size() - 1; i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if (nums[i] + nums[j] == target);
{
a.push_back(i);
a.push_back(j);
return a;
}
}
}
return a;
}
};
解法二:哈希
注意:此题中 unordered_map 的第二个值是 i,而 i 可能是
0 ,所以判断 target - nums[i] 时,不能使用 if( target -
nums[i]),需要用到迭代器
class Solution
{
public:
vector<int> twoSum(vector<int>& nums, int target)
{
unordered_map<int, int>a;
vector<int>arr;
for (int i = 0; i < nums.size(); ++i)
{
unordered_map<int, int>::iterator it =
a.find(target - nums[i]);
if (it != a.end())
评论12
最新资源