【手撕】两数之和

#include<iostream>
#include<unordered_map>
#include<vector>

using namespace std;

class Solution
{
public:
    vector<int> twoSum(vector<int>& nums, int target)
    {
        unordered_map<int, int> hashtable;
        for (int i = 0; i < nums.size(); i++)
        {
            hashtable[nums[i]] = i; // nums数组的值为key,下标为value
        }
        for (int i = 0; i < nums.size(); i++)
        {
            if (hashtable.find(target - nums[i]) != hashtable.end() && hashtable[target - nums[i]] != i)
            {
                return { i, hashtable[target - nums[i]] };
            }
        }
    }
};

int main()
{
    vector<int> nums = { 2, 4, 1, 6, 8 };
    int target = 5;
    int length = nums.size();
    vector<int> result;

    Solution solution;
    result = solution.twoSum(nums, target);

    if (!result.empty())
        for (int i = 0; i < result.size(); i++)
        {
            cout << result[i] << ' ';
        }
    else
        cout << "不存在" << endl;

    return 0;
}
原文地址:https://www.cnblogs.com/masbay/p/14194722.html