力扣1.两数之和,c++哈希表解法时间复杂度o(n)

 本题最容易想到的就是暴力遍历解法但是时间复杂为o(n^{2}),所以本题可以采用哈希表进行秋姐,代码如下

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> _map;//创建一个哈希表
        for(int i = 0;i<nums.size();i++)
        {
            unordered_map<int,int>::iterator it = _map.find(target - nums[i]);//创建迭代器查找哈希表中是否有与当前数组值相加得target的数
            if(it!=_map.end())//当迭代器it不位于哈希表尾部时,说明找到乐,返回元素
            return {it->second,i};
            _map[nums[i]] =i;//将当前数值放入哈希表,以便下轮循环查找
        }
        return {};//若找不到返回空值
    }
};

这样我们就将时间复杂度降到了o(n)

猜你喜欢

转载自blog.csdn.net/asdasd121312dasd/article/details/126538873