LC1.TwoNumsSum
题目
两数之和
给定整数数组nums和目标值target
返回和为target的两个整数在nums中的下标
两个整数不能是nums中的同一个元素
题解
#include <iostream>
#include <vector>
#include <unordered_map>
//1.暴力求解
//O(n^2)
class Solution_1
{
public:
std::vector<int> twoSum(std::vector<int>& nums, int target)
{
for (int i = 0; i < nums.size(); ++i)
{
for (int j = 0; j < nums.size(); ++i)
if (nums[i] + nums[j] == target) return { i, j };
}
return {};
}
};
//2.哈希表
//O(n)
class Solution
{
public:
std::vector<int> twoSum(std::vector<int>& nums, int target)
{
std::unordered_map<int, int> hashtable;
for (int i = 0; i < nums.size(); ++i)
{
auto it = hashtable.find(target - nums[i]);
if (it != hashtable.end()) return { it->second, i };
hashtable[nums[i]] = i;
}
return {};
}
};