代码随想录37期|LeetCode 454.四数相加II,LeetCode 383. 赎金信 ,LeetCode 15. 三数之和 ,LeetCode 18. 四数之和

1.四数相加
要点:要统计a+b是否出现过,还要统计出现的次数,所以set不够,要用map。
两组合分成两部分来判断,时间复杂度
有value个a+b的值可以与c+d相加,所以,c+d找到对应值的时候count+=value

2.三数之和
这道题比较简单的是双指针法,哈希表方法需要去重,而unordered_map有是无序的,去重麻烦
要点:双指针法需要先排序(如果要返回三元数组的下标就不能排序)
因为循环之后i是三元数组最小的一个值,如果他已经大于0了,可以直接return了
数组已经排过序,所以相等的元素重复出现,所以判断当前元素是否与某个元素相等
永远记得,因为数组经过排序,所以三元数组一定是a<b<c,这就说明遍历时,找到一个a的话,涵盖这个值的所有组合已经被找到,所以相同值不用再考虑了

3.四数之和
双指针
在三数之和的基础上加个循环
两个负数相加会变小

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值