java - HashSet disjoint() 复杂度
问题描述
两个整数哈希集的 Java Collections disjoint() 方法的大 O/时间复杂度是多少?
非常感谢任何帮助,因为我不确定它是 O(1) 还是 O(n)。
我知道哈希集包含是一个 O(1) 操作,但我不确定不相交的操作是否循环遍历集 1 的所有元素并检查集 2 是否包含这些元素中的任何一个。
解决方案
是 O(n)。
假设集合查询是 O(1)。您需要遍历其中一组,并在另一组中进行查询以查看它是否包含项目。
因此,集合迭代至少需要 O(n) 时间(您可以选择以较小的大小迭代集合。这就是他们在源代码中所做的)。
总的来说,时间复杂度是 O(n)。
推荐阅读
- c++ - 设置移动 box2d 对象的线速度(自身速度 + 玩家速度)
- compiler-optimization - 为什么高度优化的编译器不使用 ANDNOT 指令?
- git - 计算一段时间内 PR 的 git 命令行是什么?
- c++ - 枚举 C++ 中的运算符
- html - 如何制作与其背景图像一样大的部分以便完整显示它?
- python - 如何正确使用类中的函数?
- drake - Drake 中 DirectCollocation 的正弦初始轨迹猜测
- android - Delphi android - 从本地前台服务发送数据到应用程序
- javascript - 如何使用带有异步功能的反应钩子“useMemo”?
- mule - 在单个 mule 流中处理多个 If else 条件