代码随想录训练营|Day7 哈希表|454 四数相加II 383赎金信 15三数之和 18四数之和|总结

本文介绍了如何使用哈希表优化解决四数相加问题,通过对比暴力解法和哈希法,展示了如何通过空间复杂度提升来换取时间效率,以及在三数之和问题中的应用实例。
摘要由CSDN通过智能技术生成

视频链接:

文字链接:

一、454 四数相加II(代码随想录哈希表中的第四题)

1.讲解

本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。

2.笔记

整体思路

四数相加VS四数之和

题目要求:给我们四个数组,要求在四个数组中分别找出一个元素,使这四个元素相加等于零,凑出四元组。能找到几组,返回数量。

- 不需要考虑去重的操作:0000 0000 0000 0000 这道题目不用考虑去重,因为是存放在数组里的四个元素

解题思路:哈希表的经典方法。有效数组异位词时,

暴力解法:四个for循环遍历。

A
B
C
D
a+b 

只会考虑set或者map,还要统计a+b出现过多少次,然后和c+d做一个映射,不仅要统计是否出现过,还要统计出现次数,还需要一个value,此时我们需要的是一个map。
key:a+b value 3   0-(c+d)有没有出现在这个
 

map解题过程

注意事项

代码实现

总结

3.伪代码记录

4.可运行代码(待补充)

二、383 赎金信

三、15三数之和

整体思路

a+b-0
map
要去重
for(a   )
        for(b   )
                (a+b)

一种解法——双指针法
数组里找三元组a+b+c=0

【】【】【】【】【】【】
i        left                        right
nums[i] + nums[left] + nums[right] > 0  right--   <0 left++  =0 收获结果 result

代码实现

result /*结果集*/
sort(nums);
for (i = 0; i < nums.size; i++)
    if (nums[i] > 0 ) return

nums[i] == nums[i + 1]
nums[i] == nums[i - 1]

去重逻辑回顾

总结

四、18四数之和

五、总结

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值