我正在学习数据结构考试,我正试图解决这个问题:
给定n个数字和数字Z的数组,在O(n)平均时间内找到x,y,如x + y = Z.
我的建议是将数组的内容移动到哈希表,并使用开放寻址执行以下操作:
对于每个数字A [i]在哈希表中搜索ZA [i](每个操作的平均值为O(1)。)最坏的情况是你将执行n次搜索,每次平均时间为O(1),这是O(n)平均。
我的分析是否正确?
答案 0 :(得分:0)
假设您第二次遍历所有数组,是O(n)* O(1)(而不是之前所说的O(n)+ O(1))(用于哈希查找)平均时间),所以你在谈论O(n)复杂度的算法。