twoSum_hash_1

hash表实现twoSum

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        unordered_map m;
        vector res;
        for (int i = 0; i < nums.size(); ++i) {
            m[nums[i]] = i;
        }
        for (int i = 0; i < nums.size(); ++i) {
            int t = target - nums[i];
            if (m.count(t) && m[t] != i) {
                res.push_back(i);
                res.push_back(m[t]);
                break;
            }
        }
        return res;
    }
};

什么是哈希表呢?

哈希表是根据键(Key)而直接访问在内存存储位置的数据结构
维基上的解释比较抽象。我们可以把一张哈希表理解成一个数组。数组中可以存储Object,当我们要保存一个Object到数组中时,我们通过一定的算法,计算出来Object的哈希值(Hash Code),然后把哈希值作为下标,Object作为值保存到数组中。我们就得到了一张哈希表。

用一次for循环,查找target-数组中的元素得到的值是否在表中存在,注意index不可重复

你可能感兴趣的:(c++)