LeetCode_Hot100_题集_001_两数之和
题目:https://leetcode.cn/problems/two-sum/
总结:
第一次接触该题目,使用了双重for循环的解法,时间复杂度O(n^2);
看了solution后,掌握了哈希表在该题中的用法,了解到了HashMap查询的时间复杂度为O(1)这个知识点;
HashMap查询复杂度为什么是O(1)?
HashMap其数据机构为桶+链表/红黑树,
查询时先查询桶的位置,桶的位置使用 hash函数计算获得 pos = (n-1) & hash, hash为需要查询的key值
经过hash函数处理后的值,该位运算等同于pos = hash%n;
确定了桶的位置后,则在桶中查找,桶中的数据都是hash冲突后放在一个桶中的,数据量小于64,桶中为链表结构,
数据量超过64位红黑树结构,桶的数据量满足泊松分布,即有一个很低的概率,桶中数据量会超过8,则对于链表长度
为8的情况,时间复杂度为O(1);
综上所述,时间复杂度为O(1)。

浙公网安备 33010602011771号