Likou 1. 2 つの数値の合計、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