哈希表求解数组两数之和的时间复杂度计算是否存在错误?
两数之和哈希解法时间复杂度标注异议
我近期阅读了GeeksforGeeks平台的两数之和相关算法文章,对文中方法2(哈希法)的时间复杂度计算存在疑问:文中直接标注该方法时间复杂度为O(n),但实际正确结果应为O(n) 均摊(Amortized)。
对应算法的实现步骤如下:
- 初始化空哈希表
s - 遍历数组
A的每一个元素A[i]:- 若哈希表中已存在
x - A[i]的记录,则输出数对(A[i], x - A[i]) - 将当前元素
A[i]插入哈希表s中
- 若哈希表中已存在
推导逻辑:
初始化哈希表的步骤时间复杂度为O(1),遍历数组总共会执行O(n)次迭代,每次迭代中的哈希表查询、插入操作的时间复杂度均为O(1) 均摊(Amortized),因此算法整体的时间复杂度为O(n) 均摊,不属于严格意义上的O(n)。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

