lua - 我们如何以最小的时间复杂度检查 lua 表中是否存在相似的元素
问题描述
如果存在 N 个整数的表,如何检查元素是否重复(如果存在)它显示表具有重复元素的消息,如果要以最小时间复杂度实现这一点
解决方案
哈希表是要走的路(即普通的Lua表)。只需遍历每个整数并将其作为键放入表中,但首先检查键是否已存在。如果是这样,那么你有一个重复值。所以像:
values = { 1, 2, 3, 4, 5, 1 } -- input values
local htab = {}
for _, v in ipairs(values) do
if htab[v] then print('duplicate value: ' .. v)
else htab[v] = true end
end
对于小整数值,该表将使用数组,因此访问时间为 O(1)。对于较大且因此较稀疏的值,这些值将位于表的哈希表部分,也可以假设为 O(1)。因为你有 N 个值要插入,所以这是 O(N)。
应该不可能比 O(N) 更快,因为您必须至少访问列表中的每个值一次。
推荐阅读
- c - C 中的调试错误:进程停止,错误代码为 139
- apache - Apache 反向代理和 ShinyProxy
- python - 如何突出显示搜索查询结果中的单词
- ruby-on-rails - 从 JS 库到 Rails 的 CSRF
- sql - 为什么添加另一个 WHERE 子句会更改我的 sql 语句变量的类型?
- reactjs - 如何将道具从组件发送到 Redux FieldArray
- java - Java中如何正确实现生产者-消费者
- angular - Angular中的传单没有正确调整大小
- azure - Azure YAML 管道:动态查找组中的变量
- android - 如何使用 Android Room 查询预加载的数据库文件?