【问题标题】:time complexity of this given data structure这个给定数据结构的时间复杂度
【发布时间】:2015-06-05 02:40:32
【问题描述】:

我刚刚开始了解时间复杂性,我只是想确保我做对了。

如果我们有unordered_map<string, set<int>>

请注意,以哈希表的形式组织,绝不允许负载因子超过某个常数。

假设字符串是公司名称,在set<int> 中我们有员工 ID,如果我们想打印某个给定业务中的所有员工 ID,时间复杂度是多少。这是我的逻辑,如果我朝着正确的方向前进,请告诉我。

我的逻辑是这样的,因为哈希表的加载常数不会超过某个常数,所以找到一个特定的业务将是常数时间操作所以O(1)。打印列表中的所有名称基本上是按顺序遍历的 BST,因此平均为 O(N)。因此总体而言它将是 O(1)+O(N),基本上是 O(N)。这是正确的吗?

【问题讨论】:

    标签: c++ algorithm time-complexity


    【解决方案1】:

    重要的是要了解您如何计算复杂性。

    假设您在第一个容器中有 N 个条目,而 std::set<int> 包含 M 个元素。使用允许快速搜索的容器,第一部分是 O(1),然后打印是 O(M)。

    但是,如果您使用 std::vector 之类的东西,复杂度将是 O(N)+O(M)(因为搜索速度很慢)。对于常规地图,它将是 O(logN)+O(M)。

    由于 N 和 M(没有更多数据)不相关,因此您不能将它们放在 O 表达式中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多