- C++中的几种哈希表,有序对应底层实现是红黑树,无序对应底层实现是哈希表(之所以几种有序容器使用红黑树,但也称为哈希表,是因为他们也使用hashfunction将key映射为index,只是底层的符号表使用红黑树来存储;)
- 当key范围有限且分布密集(如全是字母),优先使用数组;若key范围没有限制或分布特别分散,则使用set系列;若不仅需要key还需要保存value,则使用map系列;
- 同一个数组内的两数之和:哈希表
- 同一个数组内的三数之和:第一个数用最外层for,内部用双指针判断后两个数
- 同一个数组内的四数之和:前两个数用两层for循环确定,剩下两个数用双指针确定;
- 四个不同数组的四数之和:数组A,B,C,D内各取一个数A[i],B[j],C[k],D[l]。对A,B数组用两层for循环,找出A[I] + B[j]和的所有情况,并用哈希表um存储每种和出现的次数;再对C,D数组用两层for循环,每当C[k] + D[l] == -(A[I] + B[j])时,则代表当前的k,l有um[-(C[k] + D[l] )]中A,B的组合满足i,j,k,l的和为0;
哈希表
最新推荐文章于 2023-12-23 12:14:32 发布