我想借助HashSet来解决这个问题。当我尝试发布解决方案时,在第二种情况下失败,答案为 [2,0]
但是,当我尝试在 IDE 上做同样的事情时,它会返回正确的答案
代码:
std::vector<int> twoSum(std::vector<int>& nums, int target)
{
std::unordered_set<int> mp;
for (auto i = 0; i < nums.size(); ++i)
{
if (auto it = mp.find(target - nums[i]); it == mp.end())
{
mp.emplace(nums[i]);
}
else
{
return {static_cast<int>(std::distance(mp.begin(), it)), i };
}
}
return {};
}
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return {i, j};
}
}
}
return {};
}
}
来自Leetcode中国,官方解释