代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

发布时间 2023-12-19 20:48:25作者: amulet

一、454.四数相加II

题目链接:

LeetCode 454.四数相加II

学习前:

思路:

  1. 首先定义两个HashMap对象record12和record34,对应的key存放两个数组元素的和,value存放计算的和出现的次数

  2. 接着遍历record12,若record存在与之和为0的元素,则计算两个value相乘的结果,并进行累积,作为输出的结果

时间复杂度:O(n^2)

空间复杂度:O(n^2)

学习后:

可以只定义一个HashMap对象,整体遍历两次,将后两个遍历一次性完成,降低时间复杂度

二、383. 赎金信

题目链接:

LeetCode 383. 赎金信

学习前:

思路:

  1. 与"LeetCode242.有效的字母异位词"的思路一致,定义一个长度为26的int数组,每个下表对应每个小写字符,值为小写字符出现的次数
  2. 对于ransom进行自增运算,对于magazine进行自减运算,最后对record进行判断,若所有的值均飞正,则返回true,反之false

时间复杂度:O(n+m)

空间复杂度:O(1)

学习后:

增加了对ransom和magazine长度的判断,一方面进行了优化,一方面更加严谨

三、15. 三数之和

题目链接:

LeetCode 15. 三数之和

思路混乱,暂时跳过

四、18. 四数之和

题目链接:

LeetCode 18. 四数之和

思路混乱,暂时跳过

五、学习总结

  1. 时间:1h
  2. 复习了哈希法的三种数据结构