代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

 454.四数相加II 

题目链接/文章讲解/视频讲解:代码随想录

        先遍历两个列表,用 hashmap 记录下两数之和,index 是和,value 是个数。再遍历另外两个列表,查找两数之和的相反数是否在 hashmap 中。

        注意:在遍历后两个列表时,如果两数之和的相反数 在hashmap中,count 不是 +1,而是加上 hashmap 里对应 index 的 value,因为是排列组合。

代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和_第1张图片

        时间复杂度 O(n^2),空间复杂度 O(n^2)

383. 赎金信  

题目链接/文章讲解:代码随想录

        是 242.有效的字母异位词 的拓展题,同样可以用 hashmap 或 数组来记录第一个字符串中每个元素出现的次数,然后再遍历第二个字符串,逐个检查。

代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和_第2张图片

        时间复杂度 O(n),空间复杂度 O(1)。

15. 三数之和

题目链接/文章讲解/视频讲解:代码随想录

        因为去重操作比较复杂,哈希法并不是最有效的。本题采用双指针法。先将列表排序徐,然后遍历列表,每次固定一个元素,用左右指针开始寻找满足条件的组合,根据加和的大小来移动左右指针。注意去重操作。

代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和_第3张图片

        时间复杂度 O(n^2),空间复杂度 O(1)。

18. 四数之和

题目链接/文章讲解/视频讲解:代码随想录

        三数之和的拓展。

代码随想录算法训练营第6天(哈希表 & 双指针)| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和_第4张图片

        时间复杂度 O(n^3),空间复杂度 O(1)。

 

你可能感兴趣的:(数据结构,哈希算法,python,leetcode,算法)