哈希表

  • 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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值