gpt4 book ai didi

c++ - C++中std::map的运行时复杂度是多少?

转载 作者:行者123 更新时间:2023-12-02 10:14:10 31 4
gpt4 key购买 nike

我仍然对C++中std::map的运行时复杂度感到困惑。我知道以下算法中的第一个for循环需要O(N)或线性运行时。但是,第二个for循环在映射上有另一个for循环。这会增加整体运行时的复杂性吗?换句话说,以下算法的整体运行时复杂度是多少?是O(N)还是O(Nlog(N))还是其他东西?

    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {

vector<int> result;
map<int, int> mp;

for (int i = 0; i < nums.size(); i++) {
mp[nums[i]]++;
}

for (int i = 0; i < nums.size(); i++) {
int numElements = 0;
for (auto it = mp.begin(); it != mp.end(); it++) {
if (it->first < nums[i]) numElements += it->second;
}
result.push_back(numElements);
}

return result;
}

最佳答案

映射的复杂性是插入,删除,搜索等的复杂性。但是迭代始终是线性的。
给定内部循环中的n次迭代(映射的大小),对于外部循环的每次迭代,在彼此内部具有两个这样的for循环将产生O(N ^ 2)复杂性时间(无论是否为映射)。 vector 的大小,在您的代码中与 map 的大小相同)。

关于c++ - C++中std::map的运行时复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62526973/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com