如果我有地图:
map myMap<string,vector<int>>
最好的,平均的和最差的时间复杂度是什么,找到一个密钥,然后迭代向量来找到一个特定的int?
我知道map.find()方法是O(log n),但是我必须在向量中搜索int才能改变时间复杂度吗?
由于
答案 0 :(得分:0)
如果您声明这是C ++,那会有所帮助。 std :: map通常实现为二叉树,因此查找操作的O(log(n))来自于此。
它是O(log(n)+ m),其中n是地图的大小,m是(每个)向量的大小。我假设您只进行一次查找,然后遍历与您的密钥对应的整个向量。
由于log(n)增长缓慢,除非你有非常小的向量,log(n)应该是&lt; m,因此你的算法应该是O(m)。