如何解决我们如何以最小的时间复杂度检查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)更快,因为您必须至少访问一次列表中的每个值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。