力扣算法刷题Day7 | 哈希表:四数相加 赎金信 三数之和 四数之和

力扣题目:454.四数相加II 

刷题时长:20min

复杂度分析:O(n^2)

问题总结

  1. 题目要求无需去重,所以在最后计数时,一旦有满足条件的comp直接加上哈希表中出现过的次数即可,之后也无需变更哈希表内的次数值

本题收获

  1. 独立思考编码实现

力扣题目:383. 赎金信  

刷题时长:5min

复杂度分析:O(1)

问题总结

  1. 使用dict实现哈希表费时费空间。此题全小写字母,可以映射到数组实现。

本题收获

  1. 可用数组进行优化,需留意题目的提示

力扣题目:15. 三数之和 

刷题时长:暴力法15min,双指针法15min

复杂度分析:O(n^3),O(n^2)

问题总结

  1. 没能想到双指针法。想到用排序了,但是为答案去重,而非想到一开始对已给数组排序。
  2. 理解了i j k 的去重过程

本题收获

  1. 三层循环优化至一次遍历+双指针。当数组中需要优化运行复杂度的时候,可优先考虑排序/双指针/二分法。
  2. if和continue的区别:continue是下一个i 还存在有可能的情况, break是无论后面多少个i我们是确定不会再出现这样的情况了
  3. 理解手动去重方法

力扣题目:18. 四数之和

刷题时长:15min

复杂度分析:O(n^3) - 双循环遍历 O(n^2) +双指针 O(n)

问题总结

  1. 去重剪枝的分析逻辑不清,尤其是第二位如何去重

本题收获

  1. for循环+双指针法,可通用于五数之和,六数之和等等
  2. 哈希法:哈希表用dict的key存数组所有元素值,val存出现次数,以便答案去重。用三个for循环算出comp值,回哈希表找到对应元素在数组中出现过的次数,若出现次数大于答案前三个元素中出现的次数,则没有用到重复元素,可用于最终答案。
  3. 对比题目454的四数相加:此题要求在同一集合中找四个元素,输出答案的格式为列表,四元组内元素顺序无所谓,即每个四元组内元素组合不能重复。题454要求在四个独立集合中各找一个元素,输出答案的格式为元组,即四元组内元素顺序有所谓,无需考虑元素值重复问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值