LeetCode 1 Two Sum(unordered_map和map的区别)

来源:互联网 发布:开源python微信公众号 编辑:程序博客网 时间:2024/04/29 12:14

题意:给出一个序列,并给出一个目标值,求出两个元素和为目标值的下标。

思路:stl里有一个容器unordered_map,内部是哈希实现的,有了这个容器可以不用手写哈希,复杂度O(n)。

下面是对map和unordered_map的分析:

首先map比较熟悉,它的内部是红黑树实现的,每次操作的复杂度为稳定的O(logn),unordered_map内部是哈希表实现的,在冲突少的情况下单次操作复杂度为O(1)。

class Solution {public:    vector<int> twoSum(vector<int>& nums, int target) {        map<int, int> mp;        vextor<int> ans;        for (int i = 0; i < nums.size(); i++) {        if (mp[target-nums[i]] != 0) {        ans.push_back(mp[target-nums[i]]);        ans.push_back(i);        break;        }        mp[nums[i]] = i;        }        return ans;    }};


0 0